Website: update features on pricing page (#20993)

- Removed duplicate and redundant features
- Reordered features by order of operation from the POV of an IT admin
- Consolidated use cases
- Renamed some features for clarity

See [this
doc](https://docs.google.com/document/d/1z7X__TmJIpRXQF-Mx9NK4EChwkX73fj0ymLnIJM2GnQ/edit?usp=sharing)
for more details, including methodology for the organization and
styling.

---------

Co-authored-by: Eric <eashaw@sailsjs.com>
Co-authored-by: Noah Talerman <47070608+noahtalerman@users.noreply.github.com>
This commit is contained in:
Mike Thomas
2024-08-14 09:32:41 +09:00
committed by GitHub
co-authored by Eric Noah Talerman
parent 01014f53e6
commit 9041f49d7f
4 changed files with 1158 additions and 1062 deletions
File diff suppressed because it is too large Load Diff
+3 -3
View File
@@ -29,7 +29,7 @@ module.exports = {
let pricingTable = [];
let pricingTableCategories = ['Deployment', 'Device management', 'Endpoint operations', 'Vulnerability management', 'Integrations', 'Support'];
let pricingTableCategories = ['Deployment', 'Configuration', 'Devices', 'Integrations', 'Support'];
for(let category of pricingTableCategories) {
// Get all the features in that have a pricingTableFeatures array that contains this category.
let featuresInThisCategory = _.filter(pricingTableFeatures, (feature)=>{
@@ -45,7 +45,7 @@ module.exports = {
}
let pricingTableForSecurity = [];
let categoryOrderForSecurityPricingTable = ['Support', 'Deployment', 'Integrations', 'Endpoint operations', 'Vulnerability management'];
let categoryOrderForSecurityPricingTable = ['Deployment', 'Configuration', 'Devices', 'Integrations', 'Support'];
for(let category of categoryOrderForSecurityPricingTable) {
// Get all the features in that have a pricingTableFeatures array that contains this category.
let featuresInThisCategory = _.filter(pricingTableFeatures, (feature)=>{
@@ -61,7 +61,7 @@ module.exports = {
}
let categoryOrderForITPricingTable = [ 'Deployment','Device management', 'Endpoint operations', 'Integrations', 'Support'];
let categoryOrderForITPricingTable = ['Deployment', 'Configuration', 'Devices', 'Integrations', 'Support'];
let pricingTableForIt = [];
// Sort the IT-focused pricing table from the order of the elements in the categoryOrderForITPricingTable array.
for(let category of categoryOrderForITPricingTable) {
+1 -1
View File
@@ -845,7 +845,7 @@ module.exports = {
let yaml = await sails.helpers.fs.read(path.join(topLvlRepoPath, RELATIVE_PATH_TO_PRICING_TABLE_YML_IN_FLEET_REPO)).intercept('doesNotExist', (err)=>new Error(`Could not find pricing table features YAML file at "${RELATIVE_PATH_TO_PRICING_TABLE_YML_IN_FLEET_REPO}". Was it accidentally moved? Raw error: `+err.message));
let pricingTableFeatures = YAML.parse(yaml, {prettyErrors: true});
let VALID_PRODUCT_CATEGORIES = ['Endpoint operations', 'Device management', 'Vulnerability management'];
let VALID_PRICING_TABLE_CATEGORIES = ['Support', 'Deployment', 'Integrations', 'Endpoint operations', 'Device management', 'Vulnerability management'];
let VALID_PRICING_TABLE_CATEGORIES = ['Support', 'Deployment', 'Integrations', 'Configuration', 'Devices', 'Vulnerability management'];
let VALID_PRICING_TABLE_KEYS = ['industryName', 'description', 'documentationUrl', 'tier', 'jamfProHasFeature', 'jamfProtectHasFeature', 'usualDepartment', 'productCategories', 'pricingTableCategories', 'waysToUse', 'buzzwords', 'demos', 'dri', 'friendlyName', 'moreInfoUrl', 'comingSoonOn', 'screenshotSrc', 'isExperimental'];
for(let feature of pricingTableFeatures){
// Throw an error if a feature contains an unrecognized key.
+6 -6
View File
@@ -80,7 +80,7 @@
<table purpose="pricing-categories-table" class="table">
<thead>
<tr>
<td><h4><%- category.categoryName %></h4></td>
<td><h5><%- category.categoryName %></h5></td>
<%if(pricingTable.indexOf(category) === 0) {%>
<td class="text-center">
<strong>Free</strong>
@@ -122,7 +122,7 @@
</div>
<%// Mobile features tables %>
<div purpose="mobile-feature-table-section" class="d-block d-md-none" v-for="category in pricingTable">
<h4>{{category.categoryName}}</h4>
<h5>{{category.categoryName}}</h5>
<div purpose="mobile-features-table" class="d-flex flex-column" v-for="feature in category.features">
<div purpose="striped-row" class="d-flex flex-row justify-content-between align-items-center">
<strong class="d-block">
@@ -152,7 +152,7 @@
<table purpose="pricing-categories-table" class="table">
<thead>
<tr>
<td><h4><%- category.categoryName %></h4></td>
<td><h5><%- category.categoryName %></h5></td>
<%if(pricingTableForIt.indexOf(category) === 0) {%>
<td class="text-center">
<strong>Free</strong>
@@ -194,7 +194,7 @@
</div>
<%// Mobile features tables %>
<div purpose="mobile-feature-table-section" class="d-block d-md-none" v-for="category in pricingTableForIt">
<h4>{{category.categoryName}}</h4>
<h5>{{category.categoryName}}</h5>
<div purpose="mobile-features-table" class="d-flex flex-column" v-for="feature in category.features">
<div purpose="striped-row" class="d-flex flex-row justify-content-between align-items-center" @click="">
<strong>
@@ -223,7 +223,7 @@
<table purpose="pricing-categories-table" class="table">
<thead>
<tr>
<td><h4><%- category.categoryName %></h4></td>
<td><h5><%- category.categoryName %></h5></td>
<%if(pricingTableForSecurity.indexOf(category) === 0) {%>
<td class="text-center">
<strong>Free</strong>
@@ -265,7 +265,7 @@
</div>
<%// Mobile features tables %>
<div purpose="mobile-feature-table-section" class="d-block d-md-none" v-for="category in pricingTableForSecurity">
<h4>{{category.categoryName}}</h4>
<h5>{{category.categoryName}}</h5>
<div purpose="mobile-features-table" class="d-flex flex-column" v-for="feature in category.features">
<div purpose="striped-row" class="d-flex flex-row justify-content-between align-items-center">
<strong class="d-block">