Porting semantic markup - sgml/signature GitHub Wiki
Create a table mapping the old DOM to the new DOM using Emmet
Skip routes using redirects rather than mapping old routes to new templates
Compare outerHTML of existing sections (nav, content, footer) to new skeleton
Copy AJAX key/value pairs from a single controller to view models (angular filters, function properties, indexeddb)
Comment on all assignment statements and setter functions in existing single controllers
Comment on all if/else conditions in existing single controllers
Normalize AJAX requests to only happen in callbacks of button click event handlers
Copy code from the new baseline site to new files
Cross reference all class names and attributes in the JavaScript source using Firefox
Create new templates to replace old templates
Find all references to the existing templates using a recursive search for the html file names through the project Replace old file references with new file references
Replace closures with global functions using JSLint
Create a new sample page in JSFiddle
Create filters to replace directives
Avoid the use of inline expressions in HTML; use method calls instead
- Logo Link
1a.
<a ng-href="https://us.etrade.com/what-we-offer/our-accounts/adaptive-portfolio" class="logo" tabindex="01" href="https://us.etrade.com/what-we-offer/our-accounts/adaptive-portfolio">Select to open E*Trade Adaptive Portfolio home</a>
1b.
<a href="https://us.etrade.com/what-we-offer/our-accounts/adaptive-portfolio | siteFilter" class="logo" tabindex="01" href="https://us.etrade.com/what-we-offer/our-accounts/adaptive-portfolio | siteFilter">Select to open E*Trade Adaptive Portfolio home</a>
- Progress Bar
2a.
<div class="steps">
<p class="step-indicator"><span ng-hide="questionId < 1 || questionId >= 9" class="ng-binding" aria-hidden=
"false">Question 1/8</span> <span ng-show="questionId > 9" aria-label="Questionnaire" aria-hidden="true" class=
"ng-hide">Questionnaire</span></p>
<div ng-class="{active : isActive(1)}" class="active"></div>
<div ng-class="{active : isActive(2)}"></div>
<div ng-class="{active : isActive(3)}"></div>
<div ng-class="{active : isActive(4)}"></div>
<div ng-class="{active : isActive(5)}"></div>
<div ng-class="{active : isActive(6)}"></div>
<div ng-class="{active : isActive(7)}"></div>
<div ng-class="{active : isActive(8)}"></div>
<div class="major" ng-class="{active: isActive('result')}">
<span>Result</span>
</div>
<div class="major" ng-class="{active: isActive('conversion')}">
<span alt="Open an Account" class="ng-binding">Open an Account</span>
</div>
<div class="major" ng-class="{active: isFund()}">
<span>Fund</span>
</div>
</div>
2b.
<div class="progress progress-segmented">
<div class="progress-segment active">
<span class="progress-label">Account Selection</span>
</div>
<div class="progress-segment active">
<span class="progress-label">Personal Information</span>
</div>
<div class="progress-segment">
<span class="progress-label">Verify Identity</span>
</div>
<div class="progress-segment">
<span class="progress-label">Investment Profile</span>
</div>
<div class="progress-segment">
<span class="progress-label">Account Setup</span>
</div>
</div>
- Contact Section
3a.
<div class="contact">
<a href="/frequently-asked-questions#tab_t1" target="_blank" class=
"et-icon-question before faq-icon" aria-label=
"Select to open Frequently Asked Questions page" tabindex=
"01"><span>FAQ</span></a> <a href="tel:866-484-3658" class="icon-call" alt=
"Call us 866-484-3658" tabindex="01"><span>Call Us 866-484-3658</span></a>
<button role="link" class="icon-chat no-style" ng-click="openChat()"
aria-label="Chat online" tabindex="01"><span>Chat Online</span></button>
</div>
3b.
<div class="contact">
<a href="/frequently-asked-questions#tab_t1" id="faq-link" class=
"et-icon-question before faq-icon" aria-label=
"Select to open Frequently Asked Questions page" tabindex=
"01"><span>FAQ</span></a> <a href="tel:866-484-3658" class="icon-call" alt=
"Call us 866-484-3658" tabindex="01"><span>Call Us 866-484-3658</span></a>
<button role="link" class="icon-chat no-style" ng-click="openChat()"
aria-label="Chat online" tabindex="01"><span>Chat Online</span></button>
</div>
- Spinner
4a.
<div class="cards clearfix calc ng-scope">
<div class="calc-wrapper clearfix">
<div class="hex">
<div class="triangle-wrapper">
<div class="triangle t1"></div>
<div class="triangle t2"></div>
<div class="triangle t3"></div>
<div class="triangle t4"></div>
<div class="triangle t5"></div>
<div class="triangle t6"></div>
</div>
</div>
<h1>Calculating Your <span>Risk Profile</span></h1>
</div>
</div>
4b.
<div class="spinner">
<svg class="circular" viewBox="25 25 50 50">
<circle class="background" cx="50" cy="50" r="20" fill="none" stroke-width="2" stroke-miterlimit="10"></circle>
<circle class="path" cx="50" cy="50" r="20" fill="none" stroke-width="2" stroke-miterlimit="10"></circle>
</svg>
</div>
- Question 1 (RTQ and KYC)
5a.
<div ng-class="config.questionClass[1].classArray[0]" role="radio" tabindex="20"
ng-click="setAnswer(1,0)" aria-checked="false" aria-label=
"Click to select less than 2 years option" class="option">
<div class="circ">
<p>< 2<span>Less than</span><span>2 years</span></p>
</div>
<p aria-hidden="true" role="presentation">Less than <span>2 years</span></p>
</div>
5b.
<div class="et-select-wrapper voffset3"><!-- ngInclude: 'account_list' | filterAccountsList:config.acctData.CIOEligibleAccounts.accounts -->
<select name="account_list" ng-model="config.conversionData.selectedAcct" ng-init="config.conversionData.selectedAcct = config.conversionData.selectedAcct || config.acctData.CIOEligibleAccounts.accounts[0].acctNo" id="account_list" ng-include="'account_list' | filterAccountsList:config.acctData.CIOEligibleAccounts.accounts" ng-change="config.conversionData.changeAcct($event)" class="ng-pristine ng-valid ng-scope ng-touched" tabindex="0" aria-invalid="false"><option aria-label="Click to select account INDIVIDUAL" name="INDIVIDUAL" value="GEN" class="ng-scope">INDIVIDUAL</option><option aria-label="Click to select account JN" name="JN" value="GEN3" class="ng-scope">JN</option><option aria-label="Click to select account KD" name="KD" value="GEN4" class="ng-scope">KD</option></select></div>
5c.
<label for="select1">Select input field</label>
<div class="select-wrapper">
<select class="form-control" name="select1">
<option>
Lorem ipsum
</option>
<option>
Dolor
</option>
<option>
Sit amet
</option>
</select>
</div>
5c.
- Tax-Sensitive Radio Buttons
6a.
<div class="col-xs-12 col-sm-6">
<div class="radio">
<input type="radio" name="radioA" id="radio1-not-selected" value="option0">
<label for="radio1-not-selected">Radio button not selected</label>
</div>
<div class="radio">
<input type="radio" name="radioA" id="radio1-selected" value="option1" checked="">
<label for="radio1-selected">Radio button pre-selected</label>
</div>
</div>
- Checkboxes
7a.
<input id="i_accept" class="form-control ng-pristine ng-untouched ng-valid" type="checkbox" ng-model="config.conversionData.agreementChecked" ng-disabled="config.conversionData.submitted" ng-click="config.conversionData.agreementStatus()" aria-label="Click to select" aria-describedby="accept_text" aria-controls="approve_sell" aria-required="true" aria-checked="" tabindex="0" aria-invalid="false">
7b.
<div class="checkbox">
<input type="checkbox" name="checkbox1" value="checkbox1-A">
<label for="checkbox1-A">Checkbox not selected</label>
</div>
- Spinner
8a.
<div class="cards clearfix calc ng-scope">
<div class="calc-wrapper clearfix">
<div class="hex">
<div class="triangle-wrapper">
<div class="triangle t1"></div>
<div class="triangle t2"></div>
<div class="triangle t3"></div>
<div class="triangle t4"></div>
<div class="triangle t5"></div>
<div class="triangle t6"></div>
</div>
</div>
<h1>Calculating Your <span>Risk Profile</span></h1>
</div>
</div>
8b.
<div class="spinner">
<svg class="circular" viewBox="25 25 50 50">
<circle class="background" cx="50" cy="50" r="20" fill="none" stroke-width="2" stroke-miterlimit="10"></circle>
<circle class="path" cx="50" cy="50" r="20" fill="none" stroke-width="2" stroke-miterlimit="10"></circle>
</svg>
</div>
- Error
9a.
<div class="result-err-box ng-scope" ng-if="showerr && type==='result'">
<div class="panel-warning panel clearfix">
<div class="col-xs-2 col-sm-1 col-lg-1">
<span class="et-icon-exclamation-tri warning-size-small" aria-label="Warning"></span>
</div>
<div class="col-xs-10 col-sm-11 col-lg-11">
<p class="voffset ng-binding" ng-bind="message">
Due to chart display issue, we were unable to proceed. Please re-start the application
</p>
</div>
</div>
</div>
9b.
<div class="universal-message universal-message-danger" role="alert">
<div class="universal-message-content">
<h4 class="universal-message-heading">Action Required</h4>
<p>
We would like to ensure that we have the most up-to-date records for your account.
Please take a moment to confirm or update your contact information.
<a href="">Click here</a> to review.
</p>
</div>
</div>
div.partial-responsive => div.prospect|customer|android|
div#etContainer => container
nav-wrapper => div.row + div.col-xs-12 + header
div#questionTop => form
div.page-wrapper => div.row + div.col-xs-12 col-sm-12 col-md-6 col-md-offset-3
References
- http://demo.bootstraptor.com/blocks.html
- https://webdesign.tutsplus.com/tutorials/bootstrap-3-succinctly-migrating-from-version-2-to-version-3--cms-23132
- http://upgrade-bootstrap.bootply.com
- https://webmuch.com/upgrade-bootstrap-2-twitter-bootstrap3-build/
- https://github.com/angular/angular.js/issues/15484
- https://hackernoon.com/bye-2k16-and-bye-angular-ca627861839
- http://blog.adamcameron.me/2017/04/cfml-lucee-13-v-4-14-v-6-coldfusion-we.html
- http://plnkr.co/edit/eudIJbVsKl3xoEiLmyp3?p=preview
- http://yz.mit.edu/wp/introducing-reactive-coffee/
- https://confluence.atlassian.com/confcloud/keyboard-shortcuts-markdown-and-autocomplete-724764956.html
- https://confluence.atlassian.com/bitbucketserver040/markdown-syntax-guide-785329478.html
- https://codeburst.io/the-most-uncommon-html5-tags-52273fabc0a7
- https://www.govinfo.gov/content/pkg/GPO-STYLEMANUAL-2016/pdf/GPO-STYLEMANUAL-2016.pdf
- https://webmaster.yandex.com/tools/microtest/
- https://kb.yoast.com/kb/dictionary/
- https://www.bing.com/webmaster/help/markup-reviews-aggregated-785302d2
- https://www.bing.com/webmaster/help/marking-up-your-site-with-structured-data-3a93e731
- https://www.thirdandgrove.com/insights/creating-a-tracking-pixel-with-drupal/
- https://www.w3.org/TR/html-polyglot/
- https://www.etutorialspoint.com/index.php/basic-html/html5-elements
- https://css-tricks.com/how-to-section-your-html/
- https://medium.com/alistapart/writing-html-with-accessibility-in-mind-a62026493412
- https://www.w3.org/WAI/tutorials/page-structure/sections/