mirror of
https://github.com/overleaf/overleaf.git
synced 2024-11-07 20:31:06 -05:00
Merge pull request #16277 from overleaf/tm-plans-compile-servers
Update plans and interstitial pages with updated compile timeout info GitOrigin-RevId: a92ccd4a2f381e6456459a3ad4d2840b3b49f3c8
This commit is contained in:
parent
da2f7ff153
commit
5342d95efc
9 changed files with 85 additions and 168 deletions
|
@ -133,24 +133,6 @@ async function plansPage(req, res) {
|
|||
plansPageViewSegmentation
|
||||
)
|
||||
|
||||
let showNewCompileTimeoutVariant = false
|
||||
const compileAssignment = await SplitTestHandler.promises.getAssignment(
|
||||
req,
|
||||
res,
|
||||
'compile-backend-class-n2d'
|
||||
)
|
||||
if (compileAssignment?.variant === 'n2d') {
|
||||
const timeoutAssignment = await SplitTestHandler.promises.getAssignment(
|
||||
req,
|
||||
res,
|
||||
'compile-timeout-20s'
|
||||
)
|
||||
if (timeoutAssignment?.variant === '20s') {
|
||||
// there may be anonymous/logged out users in this group
|
||||
showNewCompileTimeoutVariant = true
|
||||
}
|
||||
}
|
||||
|
||||
res.render('subscriptions/plans', {
|
||||
title: 'plans_and_pricing',
|
||||
currentView,
|
||||
|
@ -168,7 +150,6 @@ async function plansPage(req, res) {
|
|||
SubscriptionHelper.generateInitialLocalizedGroupPrice(currency),
|
||||
showInrGeoBanner,
|
||||
annualTrialsAssignment: annualTrialsAssignment?.variant,
|
||||
showNewCompileTimeoutVariant,
|
||||
})
|
||||
}
|
||||
|
||||
|
@ -371,24 +352,6 @@ async function interstitialPaymentPage(req, res) {
|
|||
templatePath = 'subscriptions/interstitial-payment'
|
||||
}
|
||||
|
||||
let showNewCompileTimeoutVariant = false
|
||||
const compileAssignment = await SplitTestHandler.promises.getAssignment(
|
||||
req,
|
||||
res,
|
||||
'compile-backend-class-n2d'
|
||||
)
|
||||
if (compileAssignment?.variant === 'n2d') {
|
||||
const timeoutAssignment = await SplitTestHandler.promises.getAssignment(
|
||||
req,
|
||||
res,
|
||||
'compile-timeout-20s'
|
||||
)
|
||||
if (timeoutAssignment?.variant === '20s') {
|
||||
// there may be anonymous/logged out users in this group
|
||||
showNewCompileTimeoutVariant = true
|
||||
}
|
||||
}
|
||||
|
||||
res.render(templatePath, {
|
||||
title: 'subscribe',
|
||||
itm_content: req.query?.itm_content,
|
||||
|
@ -398,7 +361,6 @@ async function interstitialPaymentPage(req, res) {
|
|||
interstitialPaymentConfig,
|
||||
showSkipLink,
|
||||
showInrGeoBanner,
|
||||
showNewCompileTimeoutVariant,
|
||||
})
|
||||
}
|
||||
}
|
||||
|
|
|
@ -51,13 +51,13 @@ const config = {
|
|||
items: [
|
||||
{
|
||||
feature: 'compile_timeout_short',
|
||||
info: 'compile_timeout_short_info',
|
||||
info: 'compile_timeout_short_info_basic',
|
||||
value: 'str',
|
||||
plans: {
|
||||
free: 'one_minute',
|
||||
collaborator: 'four_minutes',
|
||||
professional: 'four_minutes',
|
||||
student: 'four_minutes',
|
||||
free: 'basic',
|
||||
collaborator: '12x_basic',
|
||||
professional: '12x_basic',
|
||||
student: '12x_basic',
|
||||
},
|
||||
},
|
||||
{
|
||||
|
|
|
@ -33,12 +33,12 @@ const individualPlans = [
|
|||
items: [
|
||||
{
|
||||
feature: 'compile_timeout_short',
|
||||
info: 'compile_timeout_short_info',
|
||||
info: 'compile_timeout_short_info_basic',
|
||||
value: 'str',
|
||||
plans: {
|
||||
free: 'one_minute',
|
||||
collaborator: 'four_minutes',
|
||||
professional: 'four_minutes',
|
||||
free: 'basic',
|
||||
collaborator: '12x_basic',
|
||||
professional: '12x_basic',
|
||||
},
|
||||
},
|
||||
{
|
||||
|
@ -302,7 +302,7 @@ const groupPlans = [
|
|||
items: [
|
||||
{
|
||||
feature: 'compile_timeout_short',
|
||||
info: 'compile_timeout_short_info',
|
||||
info: 'compile_timeout_short_info_basic',
|
||||
value: 'str',
|
||||
plans: {
|
||||
group_standard: 'four_minutes',
|
||||
|
@ -310,6 +310,16 @@ const groupPlans = [
|
|||
organization: 'four_minutes',
|
||||
},
|
||||
},
|
||||
{
|
||||
feature: 'compile_servers',
|
||||
info: 'compile_servers_info',
|
||||
value: 'str',
|
||||
plans: {
|
||||
group_standard: 'fastest',
|
||||
group_professional: 'fastest',
|
||||
organization: 'fastest',
|
||||
},
|
||||
},
|
||||
{
|
||||
feature: 'realtime_track_changes',
|
||||
info: 'realtime_track_changes_info_v2',
|
||||
|
@ -482,11 +492,20 @@ const studentPlans = [
|
|||
items: [
|
||||
{
|
||||
feature: 'compile_timeout_short',
|
||||
info: 'compile_timeout_short_info',
|
||||
info: 'compile_timeout_short_info_basic',
|
||||
value: 'str',
|
||||
plans: {
|
||||
free: 'one_minute',
|
||||
student: 'four_minutes',
|
||||
free: 'basic',
|
||||
student: '12x_basic',
|
||||
},
|
||||
},
|
||||
{
|
||||
feature: 'compile_servers',
|
||||
info: 'compile_servers_info',
|
||||
value: 'str',
|
||||
plans: {
|
||||
free: 'fast',
|
||||
student: 'fastest',
|
||||
},
|
||||
},
|
||||
{
|
||||
|
|
|
@ -44,13 +44,6 @@ block content
|
|||
//- sticky header on mobile will be "hidden" (by removing its sticky position) if it reaches this div
|
||||
.invisible(aria-hidden="true" data-ol-plans-v2-table-sticky-header-stop)
|
||||
|
||||
.row.row-spaced-large.text-centered
|
||||
.col-xs-12
|
||||
p.text-centered
|
||||
strong *
|
||||
|
|
||||
| !{translate("the_free_compile_timeout_will_be_changing_soon_with_faster_servers", {}, [{name: 'a', attrs: {href: '/blog/changes-to-free-compile-timeouts-and-servers', rel: 'noopener noreferrer', target: '_blank'}}])}
|
||||
|
||||
if (showSkipLink)
|
||||
.row.row-spaced-small.text-center
|
||||
a(href='/project'
|
||||
|
|
|
@ -44,13 +44,6 @@ block content
|
|||
//- sticky header on mobile will be "hidden" (by removing its sticky position) if it reaches this div
|
||||
.invisible(aria-hidden="true" data-ol-plans-v2-table-sticky-header-stop)
|
||||
|
||||
.row.row-spaced-large.text-centered
|
||||
.col-xs-12
|
||||
p.text-centered
|
||||
strong *
|
||||
|
|
||||
| !{translate("the_free_compile_timeout_will_be_changing_soon_with_faster_servers", {}, [{name: 'a', attrs: {href: '/blog/changes-to-free-compile-timeouts-and-servers', rel: 'noopener noreferrer', target: '_blank'}}])}
|
||||
|
||||
if (showSkipLink)
|
||||
.row.row-spaced-small.text-center
|
||||
a(href='/project'
|
||||
|
|
|
@ -44,13 +44,6 @@ block content
|
|||
//- sticky header on mobile will be "hidden" (by removing its sticky position) if it reaches this div
|
||||
.invisible(aria-hidden="true" data-ol-plans-v2-table-sticky-header-stop)
|
||||
|
||||
.row.row-spaced-large.text-centered
|
||||
.col-xs-12
|
||||
p.text-centered
|
||||
strong *
|
||||
|
|
||||
| !{translate("the_free_compile_timeout_will_be_changing_soon_with_faster_servers", {}, [{name: 'a', attrs: {href: '/blog/changes-to-free-compile-timeouts-and-servers', rel: 'noopener noreferrer', target: '_blank'}}])}
|
||||
|
||||
if (showSkipLink)
|
||||
.row.row-spaced-small.text-center
|
||||
a(href='/project'
|
||||
|
|
|
@ -26,10 +26,6 @@ block content
|
|||
include ./plans/_cards_controls_tables
|
||||
.row.row-spaced-large.text-centered
|
||||
.col-xs-12
|
||||
p.text-centered
|
||||
strong *
|
||||
|
|
||||
| !{translate("the_free_compile_timeout_will_be_changing_soon_with_faster_servers", {}, [{name: 'a', attrs: {href: '/blog/changes-to-free-compile-timeouts-and-servers', rel: 'noopener noreferrer', target: '_blank'}}])}
|
||||
p.text-centered
|
||||
strong #{translate("all_prices_displayed_are_in_currency", {recommendedCurrency})}
|
||||
|
|
||||
|
|
|
@ -90,73 +90,54 @@ mixin plans_v2_table(period, config)
|
|||
span )
|
||||
span.sr-only #{translate(featuresPerSection.dividerInfo)}
|
||||
for feature, featureIndex in featuresPerSection.items
|
||||
unless !showNewCompileTimeoutVariant && feature.feature === 'compile_servers'
|
||||
tr(
|
||||
class=(featureIndex === (featuresPerSection.items.length - 1) ? `plans-v2-table-row-last-row-per-section cols-${maxColumn}` : `cols-${maxColumn}`)
|
||||
tr(
|
||||
class=(featureIndex === (featuresPerSection.items.length - 1) ? `plans-v2-table-row-last-row-per-section cols-${maxColumn}` : `cols-${maxColumn}`)
|
||||
)
|
||||
td(
|
||||
event-tracking="plans-page-table"
|
||||
event-tracking-trigger="hover"
|
||||
event-tracking-ga="subscription-funnel"
|
||||
event-tracking-label=`${feature.feature}`
|
||||
colspan=baseColspan
|
||||
)
|
||||
.plans-v2-table-feature-name
|
||||
if feature.info
|
||||
span #{translate(feature.feature)}
|
||||
//- will only appear on screen width >= 768px (using CSS)
|
||||
i.fa.fa-question-circle.plans-v2-table-feature-name-question-icon(
|
||||
data-toggle="tooltip"
|
||||
title=translate(feature.info),
|
||||
data-placement="right"
|
||||
)
|
||||
//- will only appear on screen width < 768px (using CSS)
|
||||
span.plans-v2-table-feature-name-learn-more-container
|
||||
span (
|
||||
span.plans-v2-table-feature-name-learn-more-text(
|
||||
data-toggle="tooltip"
|
||||
title=translate(feature.info),
|
||||
data-placement="top"
|
||||
) #{translate("learn_more_lowercase")}
|
||||
span )
|
||||
else
|
||||
| #{translate(feature.feature)}
|
||||
for plan, planIndex in Object.keys(feature.plans)
|
||||
- var tableHeadOptions = Object.values(config.tableHead)[planIndex] || {}
|
||||
- var colspan = tableHeadOptions.colspan || baseColspan
|
||||
-
|
||||
if (planIndex === discountedColumn.index) {
|
||||
var tdClass = 'plans-v2-table-discount-highlighted'
|
||||
} else if (planIndex === config.highlightedColumn.index) {
|
||||
var tdClass = 'plans-v2-table-green-highlighted'
|
||||
} else if (planIndex === config.highlightedColumn.index - 1) {
|
||||
var tdClass = 'plans-v2-table-cell-before-green-highlighted-column'
|
||||
} else {
|
||||
var tdClass = ''
|
||||
}
|
||||
td(
|
||||
event-tracking="plans-page-table"
|
||||
event-tracking-trigger="hover"
|
||||
event-tracking-ga="subscription-funnel"
|
||||
event-tracking-label=`${feature.feature}`
|
||||
colspan=baseColspan
|
||||
class=tdClass
|
||||
colspan=colspan
|
||||
)
|
||||
.plans-v2-table-feature-name
|
||||
if feature.info
|
||||
span #{translate(feature.feature)}
|
||||
//- will only appear on screen width >= 768px (using CSS)
|
||||
if showNewCompileTimeoutVariant && feature.info === 'compile_timeout_short_info'
|
||||
i.fa.fa-question-circle.plans-v2-table-feature-name-question-icon(
|
||||
data-toggle="tooltip"
|
||||
title=translate("compile_timeout_short_info_basic"),
|
||||
data-placement="right"
|
||||
)
|
||||
//- will only appear on screen width < 768px (using CSS)
|
||||
span.plans-v2-table-feature-name-learn-more-container
|
||||
span (
|
||||
span.plans-v2-table-feature-name-learn-more-text(
|
||||
data-toggle="tooltip"
|
||||
title=translate("compile_timeout_short_info_basic"),
|
||||
data-placement="top"
|
||||
) #{translate("learn_more_lowercase")}
|
||||
span )
|
||||
span.sr-only #{translate("compile_timeout_short_info_basic")}
|
||||
else
|
||||
i.fa.fa-question-circle.plans-v2-table-feature-name-question-icon(
|
||||
data-toggle="tooltip"
|
||||
title=translate(feature.info),
|
||||
data-placement="right"
|
||||
)
|
||||
//- will only appear on screen width < 768px (using CSS)
|
||||
span.plans-v2-table-feature-name-learn-more-container
|
||||
span (
|
||||
span.plans-v2-table-feature-name-learn-more-text(
|
||||
data-toggle="tooltip"
|
||||
title=translate(feature.info),
|
||||
data-placement="top"
|
||||
) #{translate("learn_more_lowercase")}
|
||||
span )
|
||||
span.sr-only #{translate(feature.info)}
|
||||
else
|
||||
| #{translate(feature.feature)}
|
||||
for plan, planIndex in Object.keys(feature.plans)
|
||||
- var tableHeadOptions = Object.values(config.tableHead)[planIndex] || {}
|
||||
- var colspan = tableHeadOptions.colspan || baseColspan
|
||||
-
|
||||
if (planIndex === discountedColumn.index) {
|
||||
var tdClass = 'plans-v2-table-discount-highlighted'
|
||||
} else if (planIndex === config.highlightedColumn.index) {
|
||||
var tdClass = 'plans-v2-table-green-highlighted'
|
||||
} else if (planIndex === config.highlightedColumn.index - 1) {
|
||||
var tdClass = 'plans-v2-table-cell-before-green-highlighted-column'
|
||||
} else {
|
||||
var tdClass = ''
|
||||
}
|
||||
td(
|
||||
class=tdClass
|
||||
colspan=colspan
|
||||
)
|
||||
+table_cell(feature, plan)
|
||||
+table_cell(feature, plan)
|
||||
|
||||
mixin table_individual(period)
|
||||
table.card.plans-v2-table.plans-v2-table-individual
|
||||
|
@ -342,32 +323,15 @@ mixin table_cell(feature, plan)
|
|||
data-ol-plans-v2-table-cell-plan=plan
|
||||
data-ol-plans-v2-table-cell-feature=featureName
|
||||
)
|
||||
if feature.feature === 'compile_servers'
|
||||
if showNewCompileTimeoutVariant
|
||||
| #{translate(planValue)}
|
||||
else if feature.feature === 'compile_timeout_short'
|
||||
if showNewCompileTimeoutVariant && plan !== 'group_standard' && plan !== 'group_professional' && plan !== 'organization'
|
||||
if plan === 'free'
|
||||
| #{translate("basic")}
|
||||
strong *
|
||||
else
|
||||
| #{translate("12x_basic")}
|
||||
if (feature.value === 'str')
|
||||
| !{translate(planValue, {}, ['strong'])}
|
||||
else if (feature.value === 'bool')
|
||||
if (planValue)
|
||||
i.fa.fa-check(aria-hidden="true")
|
||||
span.sr-only #{translate("feature_included")}
|
||||
else
|
||||
if plan === 'free'
|
||||
| #{translate(planValue)}
|
||||
strong *
|
||||
else
|
||||
| #{translate(planValue)}
|
||||
else
|
||||
if (feature.value === 'str')
|
||||
| !{translate(planValue, {}, ['strong'])}
|
||||
else if (feature.value === 'bool')
|
||||
if (planValue)
|
||||
i.fa.fa-check(aria-hidden="true")
|
||||
span.sr-only #{translate("feature_included")}
|
||||
else
|
||||
span(aria-hidden="true") -
|
||||
span.sr-only #{translate("feature_not_included")}
|
||||
span(aria-hidden="true") -
|
||||
span.sr-only #{translate("feature_not_included")}
|
||||
|
||||
mixin group_plans_license_picker()
|
||||
form.plans-v2-license-picker-form(data-ol-plans-v2-license-picker-form)
|
||||
|
|
|
@ -281,7 +281,6 @@
|
|||
"compile_terminated_by_user": "The compile was cancelled using the ‘Stop Compilation’ button. You can download the raw logs to see where the compile stopped.",
|
||||
"compile_timeout": "Compile timeout (minutes)",
|
||||
"compile_timeout_short": "Compile timeout",
|
||||
"compile_timeout_short_info": "This is how much time you get to compile your project on the Overleaf servers. For short and simple projects, 1 minute should be enough, but you may need longer for complex or longer projects",
|
||||
"compile_timeout_short_info_basic": "This is how much time you get to compile your project on the Overleaf servers. You may need additional time for longer or more complex projects.",
|
||||
"compiler": "Compiler",
|
||||
"compiles_on_our_free_plan_are_now_on_faster_servers": "Compiles on our free plan are now on faster servers, and we’re gradually <0>introducing a shorter compile timeout limit</0>. This project currently exceeds the new limit, so it might not compile in future.",
|
||||
|
@ -1218,7 +1217,6 @@
|
|||
"on_free_plan_upgrade_to_access_features": "You are on the __appName__ Free plan. Upgrade to access these <0>Premium Features</0>",
|
||||
"one_collaborator": "Only one collaborator",
|
||||
"one_free_collab": "One free collaborator",
|
||||
"one_minute": "1 minute",
|
||||
"one_step_away_from_professional_features": "You are one step away from accessing <0>Overleaf Professional features</0>!",
|
||||
"one_user": "1 user",
|
||||
"online_latex_editor": "Online LaTeX Editor",
|
||||
|
@ -1848,7 +1846,6 @@
|
|||
"the_easy_online_collab_latex_editor": "The easy to use, online, collaborative LaTeX editor",
|
||||
"the_file_supplied_is_of_an_unsupported_type ": "The link to open this content on Overleaf pointed to the wrong kind of file. Valid file types are .tex documents and .zip files. If this keeps happening for links on a particular site, please report this to them.",
|
||||
"the_following_files_already_exist_in_this_project": "The following files already exist in this project:",
|
||||
"the_free_compile_timeout_will_be_changing_soon_with_faster_servers": "The free compile timeout will be changing soon as we introduce faster servers. <0>Find out more</0>.",
|
||||
"the_project_that_contains_this_file_is_not_shared_with_you": "The project that contains this file is not shared with you",
|
||||
"the_requested_conversion_job_was_not_found": "The link to open this content on Overleaf specified a conversion job that could not be found. It’s possible that the job has expired and needs to be run again. If this keeps happening for links on a particular site, please report this to them.",
|
||||
"the_requested_publisher_was_not_found": "The link to open this content on Overleaf specified a publisher that could not be found. If this keeps happening for links on a particular site, please report this to them.",
|
||||
|
|
Loading…
Reference in a new issue