-
-
Save cthrax/de6fba0bda40e19543af81939cf4180f to your computer and use it in GitHub Desktop.
simplify attributes
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<html xmlns:v="urn:schemas-microsoft-com:vml" | |
xmlns:o="urn:schemas-microsoft-com:office:office" | |
xmlns:x="urn:schemas-microsoft-com:office:excel" | |
xmlns="http://www.w3.org/TR/REC-html40"> | |
<head> | |
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> | |
<meta name="ProgId" content="Excel.Sheet" /> | |
<meta name="isi:reportVersion" content="1.0" /> | |
<meta name="isi:reportId" content="93aef679-8e9d-4fb6-865c-4ad11ae8dd75" /> | |
<meta name="isi:reportType" content="LogReport" /> | |
<meta name="isi:reportCreated" content="2016-09-20T16:08:33Z" /> | |
<meta name="isi:wsl" content="version=1.0;H4sIAAAAAAAAA3VSzW7TQBAepyYJIZXSlooIkLAEqlIJS0nz04QjlBs/FfQFnHhdLHAdrTecOPQBeAAegyMHkBBnjjwCB4QQrxC+Ga9dI8FaszOe3W/222+nSzy2yaMmtalBHbpKXbqJjIwNt0b00SH6Cv8C/hjmYuESrI34A/w57IjyfHe9XhO1sL6HekTxjYbYLcTPVzoKFsp7+Eq9Dkycnnm9yOx7vdFkfDiZ7dOJxTr4qtjriE9UslQ6MCutvN6X9w8qMHprcTXa+gt3DfGxVlkmoGUWV0CfBbOJ++4K5tPvhthtxPcDnSbK6HjhXcCTeaCBHw9mU8Z3oFIbcx16NXF2R+TaLLkX9f7DvSgjmnWg7S9o+c3JtcYv9ayeP4VnTe7jUjFacjK/WCt/pnM+62KdZM3F3KzUcqxfoib7K8wtTpT3NIoyZaAe0TO1TLXBvVNQNrHKkLuH/e/g31j8BuNgd+3/d+FINY4vwx6lZ6exWYXK8mhYHkzBlRz2oAHsFrvq2plV5BqLvEWeBAlv2qnmKuzuIN+3w//HVIxcM7fUjDXp2vOY81FglMdiIK7DHgf6pQpJ6i+G86g/ngz8cDob+aMwnPjzAzX1VT8cHBwO+4PZMOJ75D21JzX5DSODN5XcVqkbupB+SG5XcmzcWsWb1UutnBKDlqE/eO1TT6gDAAA=" /> | |
<style> | |
<!-- | |
#logo { | |
background-image: url("data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIGJhc2VQcm9maWxlPSJiYXNpYyIgaWQ9IkxheWVyXzEiDQoJIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIwIDAgNTUxLjkgMTAyLjMiDQoJIHhtbDpzcGFjZT0icHJlc2VydmUiPg0KPHN0eWxlIHR5cGU9InRleHQvY3NzIj4NCgkuc3Qwe2ZpbGw6I0ZCQjczNTt9DQoJLnN0MXtmaWxsOiMyOTM2ODE7fQ0KPC9zdHlsZT4NCjxnPg0KCTxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik02OS4zLDQxLjljMC45LTUuMSwxLjgtMTEuNCwxLjYtMTUuN2MtMC40LTguNi00LjQtOS44LTkuMi05LjhjLTQuOCwwLTcuOSwwLjctMTEuOCw0LjQNCgkJYy0yLjYsMi40LTMuNSw1LjctMy41LDUuN3MtNC4zLTAuNi03LjctMC4yYy00LjIsMC40LTguOSwzLjEtMTEsNi4yYy0yLjUsMy43LTAuOSw4LjcsNywxMi42YzYuMywzLjEsMTYuNyw0LjMsMjQuMSw0LjcNCgkJQzU5LjgsNDUuNCw2NC40LDQyLDY5LjMsNDEuOSIvPg0KCTxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0xMDYuNCwyNi40Yy0zLjMtMC40LTcuMywwLjEtNy4zLDAuMXMwLjMtMy4zLTEuMy01LjdjLTIuNC0zLjctNS4zLTQuNC0xMC4xLTQuNGMtNC45LDAtOS40LDEuMi0xMy4xLDkuOA0KCQljLTEuOSw0LjMtMy41LDEwLjYtNC42LDE1LjdjNC41LDAuNCw3LjQsMy43LDYuNyw3LjljNy41LTAuNCwxNy42LTEuMiwyNS4zLTQuNGM5LjUtMy45LDEyLjYtNywxMi40LTExLjUNCgkJQzExNC40LDMwLjcsMTEwLjUsMjYuOCwxMDYuNCwyNi40Ii8+DQoJPHBhdGggY2xhc3M9InN0MCIgZD0iTTY2LjEsNTguMmMtNC43LDAtNy45LTMuMi03LjUtNy4zYy03LjUsMC40LTE3LjUsMS4xLTI1LjYsNGMtOS43LDMuNS0xMy4xLDYuOC0xMi41LDEyLjYNCgkJYzAuNCwzLjIsNC42LDYuNCw4LjcsNi45YzMuMywwLjQsNy44LTAuMiw3LjgtMC4ycy0wLjMsMy4zLDEuMyw1LjdjMi40LDMuNyw1LjMsNC40LDEwLjEsNC40YzQuOSwwLDkuMy0xLjIsMTMuMS05LjgNCgkJQzYzLjMsNzAsNjUsNjMuNCw2Ni4xLDU4LjIiLz4NCgk8cGF0aCBjbGFzcz0ic3QwIiBkPSJNMTAwLjksNTUuMWMtNi43LTIuOC0xNy0zLjgtMjQuNC00LjJjLTEuMiwzLjktNS4yLDctOS42LDcuM0M2Niw2My4zLDY1LDcwLDY1LjIsNzQuNA0KCQljMC40LDguNiw0LjQsOS44LDkuMiw5LjhjNC42LDAsNy45LTAuNywxMS44LTQuNGMyLjUtMi40LDMuNS01LjcsMy41LTUuN3M0LjMsMC42LDcuNywwLjJjNC4yLTAuNCwxMC4yLTMuMSwxMS42LTYuNQ0KCQlDMTExLjEsNjMuMSwxMDguOCw1OC40LDEwMC45LDU1LjEiLz4NCjwvZz4NCjxnPg0KCTxwb2x5Z29uIGNsYXNzPSJzdDEiIHBvaW50cz0iMjY5LjksNTQuMSAzMDIuMSw1NC4xIDI5Ni44LDcxLjEgMjY0LjYsNzEuMSAJIi8+DQoJPHBhdGggY2xhc3M9InN0MSIgZD0iTTMzMy44LDYzLjhjLTAuNSwxLjctMC42LDMuMi0wLjMsNC40YzAuOCw0LDYuNSw0LjgsMTEuNyw0LjhjNC41LDAsMTEuOC0xLjEsMTMuMy02YzEtMy41LTIuNi00LjQtMTctNy42DQoJCWMtMTMuMy0zLTI4LjYtNS45LTI0LjUtMTkuMmM0LjctMTUuMywyNC40LTIxLjksNDIuOC0yMS45YzE5LjQsMCwzNSw1LjUsMzAuOCwyMS43aC0yNi4xYzEuMy0yLjUsMC4zLTQuMi0xLjYtNS4zDQoJCWMtMS45LTEuMi00LjktMS43LTcuNi0xLjdjLTMuOCwwLTEwLjEsMC43LTExLjMsNC41Yy0xLDQuNywxMS41LDUuNywyMy40LDguNGMxMS45LDIuNiwyMy4xLDcsMTkuNCwxOS4xDQoJCWMtNS4zLDE3LjMtMjguNSwyMi45LTQ4LjQsMjIuOWMtMTAuMiwwLTM4LjMtMi43LTMyLjEtMjMuOUgzMzMuOHoiLz4NCgk8cGF0aCBjbGFzcz0ic3QxIiBkPSJNNDI3LjUsMzIuMmgtMjQuOGw0LjEtMTMuNWgyNC44TDQyNy41LDMyLjJ6IE00MDAuOCwzNy45aDI0LjhsLTE0LjgsNDguMkgzODZMNDAwLjgsMzcuOXoiLz4NCgk8cGF0aCBjbGFzcz0ic3QxIiBkPSJNNDY1LDM3LjlINDc3bC0zLjUsMTEuM2gtMTIuMUw0NTYuMyw2NmMtMS40LDQuNS0wLjYsNi40LDUuNyw2LjRjMS45LDAsMy44LTAuMSw1LjctMC4zbC00LjMsMTMuOQ0KCQljLTUsMC0xMC44LDAuNi0xNi4xLDAuNmMtMTAuNSwwLTIxLjgtMS4yLTE3LjgtMTQuNGw3LjEtMjMuMWgtOC45bDMuNS0xMS4zaDguOWw0LjUtMTQuN2gyNC44TDQ2NSwzNy45eiIvPg0KCTxwYXRoIGNsYXNzPSJzdDEiIGQ9Ik01MzcuMiw4Ni4xaC0yNGwxLjktNi4xaC0wLjJjLTYuMSw0LjgtMTMuNSw3LjMtMjMuNSw3LjNjLTExLjcsMC0yMC43LTUuMy0xNy4zLTE2LjNsMTAuMS0zMy4xSDUwOWwtNy43LDI1LjMNCgkJYy0xLjcsNS42LTIsOS41LDUuMiw5LjVjNC4zLDAsMTAuNC0xLjYsMTIuOC05LjNsNy44LTI1LjVoMjQuOEw1MzcuMiw4Ni4xeiIvPg0KCTxwb2x5Z29uIGNsYXNzPSJzdDEiIHBvaW50cz0iMTY5LjMsMTkuOCAxOTYuOSwxOS44IDE3Ni42LDg2LjEgMTQ5LDg2LjEgCSIvPg0KCTxwYXRoIGNsYXNzPSJzdDEiIGQ9Ik0xOTkuNywzNy45aDI0bC0xLjksNi4xaDAuM2M2LjEtNC44LDEzLjUtNy4zLDIzLjUtNy4zYzExLjcsMCwyMC43LDUuMywxNy4zLDE2LjNsLTEwLjEsMzMuMWgtMjQuOGw3LjctMjUuMw0KCQljMS43LTUuNiwyLTkuNS01LjMtOS41Yy00LjMsMC0xMC40LDEuNi0xMi44LDkuM2wtNy44LDI1LjVoLTI0LjhMMTk5LjcsMzcuOXoiLz4NCgk8cGF0aCBjbGFzcz0ic3QxIiBkPSJNNzIuMSw1MC4xQzcxLjYsNTIuMiw2OS4zLDU0LDY3LDU0Yy0yLjQsMC00LTEuNy0zLjYtMy45YzAuNC0yLjIsMi43LTMuOSw1LjEtMy45DQoJCUM3MC45LDQ2LjIsNzIuNSw0Ny45LDcyLjEsNTAuMSIvPg0KCTxwYXRoIGNsYXNzPSJzdDEiIGQ9Ik0xMjMuOSwyMS40YzAuOS0xLjksMC40LTQuNy0xLjEtNi4yQzEwNC4yLTQuNSw2MS45LTUuMSwzMC42LDEzLjZjLTcuNCw0LjQtMTMuMyw5LjktMTguMSwxNS42DQoJCWM0LjEtNC40LDkuNC04LjQsMTUuNC0xMkM1NSwxLDkxLjMsMS4yLDEwOS44LDIxLjFjMCwwLDMsMy4zLDYuMSw0QzExOS43LDI1LjksMTIyLjMsMjQuNSwxMjMuOSwyMS40Ii8+DQoJPHBhdGggY2xhc3M9InN0MSIgZD0iTTEyLjUsMzMuM2MtMi41LDAuNi00LjYsMi4yLTUuOCw0Yy0xNi4xLDI1LjItMiw1My45LDMwLjcsNjIuN2M3LjcsMi4xLDE2LjEsMi41LDI0LjQsMg0KCQljLTYuNiwwLjEtMTMtMC44LTE5LjMtMi41QzE0LjEsOTEuOSwzLjgsNjQuOSwyMCw0MC43YzAsMCwxLjEtMS44LDAuNS0zLjlDMTkuNywzMy44LDE2LjcsMzIuMywxMi41LDMzLjMiLz4NCgk8cGF0aCBjbGFzcz0ic3QxIiBkPSJNNjcuMSwxMDAuOWMxLjYsMS4zLDMuNywxLjcsNi43LDEuM2MzNC43LTUuNSw2Mi44LTMzLjYsNjEuNS02MS4yYy0wLjMtNi41LTIuOC0xMi40LTYuMi0xNy42DQoJCWMyLjQsNC4zLDMuNiw5LjIsMy45LDE0LjVjMS4xLDIzLjktMjUuMyw0Ny41LTYwLjIsNTIuOWwwLDBjLTEuNiwwLjItMy4yLDAuOC00LjYsMS44QzY1LDk1LDY0LjQsOTguNyw2Ny4xLDEwMC45Ii8+DQoJPHBhdGggY2xhc3M9InN0MSIgZD0iTTEzMy41LDk2LjVjLTEsMS4xLTIuMywxLjYtMy44LDEuNmMtMS41LDAtMi44LTAuNS0zLjgtMS42Yy0xLTEuMS0xLjYtMi4zLTEuNi0zLjhjMC0xLjUsMC41LTIuNywxLjYtMy44DQoJCWMxLTEsMi4zLTEuNiwzLjgtMS42YzEuNSwwLDIuOCwwLjUsMy44LDEuNmMxLjEsMSwxLjYsMi4zLDEuNiwzLjhDMTM1LjEsOTQuMiwxMzQuNSw5NS40LDEzMy41LDk2LjUgTTEyNi40LDg5LjQNCgkJYy0wLjksMC45LTEuMywyLTEuMywzLjNjMCwxLjMsMC40LDIuNCwxLjMsMy4zYzAuOSwwLjksMiwxLjQsMy4zLDEuNGMxLjMsMCwyLjQtMC41LDMuMy0xLjRjMC45LTAuOSwxLjMtMiwxLjMtMy4zDQoJCWMwLTEuMy0wLjQtMi40LTEuMy0zLjNjLTAuOS0wLjktMi0xLjQtMy4zLTEuNEMxMjguNCw4OC4xLDEyNy4zLDg4LjUsMTI2LjQsODkuNCBNMTI5LjYsODkuN2MwLjcsMCwxLjMsMC4xLDEuNiwwLjINCgkJYzAuNiwwLjMsMC45LDAuOCwwLjksMS41YzAsMC41LTAuMiwwLjktMC42LDEuMmMtMC4yLDAuMS0wLjUsMC4yLTAuOSwwLjNjMC41LDAuMSwwLjgsMC4zLDEsMC42YzAuMiwwLjMsMC4zLDAuNiwwLjMsMC45djAuNA0KCQljMCwwLjEsMCwwLjMsMCwwLjRjMCwwLjIsMCwwLjMsMC4xLDAuM2wwLDAuMWgtMWMwLDAsMCwwLDAtMC4xYzAsMCwwLDAsMC0wLjFsMC0wLjJ2LTAuNWMwLTAuNy0wLjItMS4xLTAuNS0xLjMNCgkJYy0wLjItMC4xLTAuNi0wLjItMS4yLTAuMmgtMC44djIuM2gtMXYtNS45SDEyOS42eiBNMTMwLjcsOTAuNmMtMC4zLTAuMS0wLjctMC4yLTEuMy0wLjJoLTAuOXYyLjFoMC45YzAuNCwwLDAuOCwwLDEtMC4xDQoJCWMwLjQtMC4yLDAuNi0wLjUsMC42LTAuOUMxMzEuMSw5MS4xLDEzMSw5MC44LDEzMC43LDkwLjYiLz4NCjwvZz4NCjwvc3ZnPg=="); | |
background-size: 160px; | |
background-repeat: no-repeat; | |
background-position: 0px; | |
margin: 5px 15px; | |
height: 50px; | |
width: 180px; | |
float: left; | |
} | |
body { | |
font-family: "Roboto", Arial, Helvetica, Geneva, sans-serif; | |
margin: 0px; | |
} | |
#header { | |
height: 10px; | |
background: #002378; | |
margin-bottom: 10px; | |
} | |
#devLink { | |
font-size: 9px; | |
float: right; | |
margin: 15px; | |
} | |
#header { | |
height: 5px; | |
background: #002378; | |
margin-bottom: 10px; | |
clear: both; | |
} | |
button { | |
font-weight: bold; | |
font-size: 14px; | |
color: #00238c; | |
padding: 5px 10px 5px 30px; | |
background-color: #ffb937; | |
border: 2px solid #00238c; | |
background-image: url("data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJMYXllcl8xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCINCgkgdmlld0JveD0iMCAwIDEwMCAxMDAiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDEwMCAxMDA7IiB4bWw6c3BhY2U9InByZXNlcnZlIj4NCjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+DQoJLnN0MHtmaWxsOiMwMDIzNzg7fQ0KPC9zdHlsZT4NCjxnIGlkPSJCYWNrZ3JvdW5kIj4NCjwvZz4NCjxnIGlkPSJEZXNpZ25zIj4NCgk8Zz4NCgkJPHBhdGggY2xhc3M9InN0MCIgZD0iTTg2LDI3Yy0wLjgtNi4zLTQuMS0xMS4zLTguNy0xMy45Yy00LjQtMi41LTkuNy0zLTE0LjYtMS42QzU4LjMsNSw1MC43LDAsNDAuOSwwYy0xNC40LDAtMjUsMTEuMS0yNi4xLDIzLjQNCgkJCUM2LjIsMjYuNSwwLDM0LjUsMCw0My45QzAsNTYsMTAuMiw2NS44LDIyLjcsNjUuOGgxMS41di02LjZIMjIuN2MtOC44LDAtMTUuOS02LjgtMTUuOS0xNS40YzAtNy4yLDUuMS0xMy4yLDEyLTE0LjkNCgkJCWMxLjUtMC40LDIuNi0xLjcsMi42LTMuMmMtMC4xLTkuNyw4LTE5LjIsMTkuNS0xOS4yYzguNCwwLDE0LjUsNC43LDE3LjQsMTAuMmMwLjksMS42LDIuOSwyLjMsNC42LDEuNGMzLjUtMS43LDcuNy0xLjQsMTAuOSwwLjQNCgkJCWMzLjMsMS45LDUuNyw1LjMsNS43LDEwLjljMCwxLjYsMS4yLDMsMi44LDMuMmM2LjIsMSwxMC44LDcuMSwxMC44LDEzLjJjMCw3LjMtNS44LDEzLjItMTUuOSwxMy4ySDYzLjF2Ni42aDE0LjENCgkJCWMxMywwLDIyLjctOC44LDIyLjctMTkuN0MxMDAsMzcuNyw5NC41LDI5LjYsODYsMjd6Ii8+DQoJCTxwb2x5Z29uIGNsYXNzPSJzdDAiIHBvaW50cz0iNTUuMyw0OS43IDQxLjYsNDkuNyA0MS42LDczLjEgMjgsNzMuMSA0OC41LDEwMCA2OSw3My4xIDU1LjMsNzMuMSAJCSIvPg0KCTwvZz4NCjwvZz4NCjwvc3ZnPg=="); | |
background-repeat: no-repeat; | |
background-size: 18px; | |
background-position: 5px; | |
cursor: pointer; | |
margin: 15px 15px 13px 15px; | |
} | |
table { | |
margin-left: 15px; | |
} | |
td { | |
border:none; | |
white-space:nowrap; | |
font-size: 13px; | |
height: 14px; | |
padding-right: 15px; | |
} | |
table tr.sectionHeader td { | |
font-weight:bold; | |
} | |
table tr.dataHeader td { | |
font-weight:bold; | |
} | |
.date { | |
mso-number-format:"m\/d\/yy\\ h\:mm\:ss\.000"; | |
} | |
.data, .date { | |
text-align: left; | |
white-space: nowrap; | |
} | |
dl { | |
overflow: hidden; | |
} | |
dt { | |
float: left; | |
} | |
dd { | |
float: left; | |
} | |
#processing { | |
margin: 20px 0px; | |
float: left; | |
width: 180px; | |
} | |
.spinner { | |
position: relative; | |
left: 0px; | |
} | |
@keyframes spinner { | |
to {transform: rotate(360deg);} | |
} | |
.spinner:before { | |
content: ''; | |
box-sizing: border-box; | |
position: absolute; | |
width: 20px; | |
height: 20px; | |
border-radius: 50%; | |
border-top: 2px solid #00278c; | |
border-right: 2px solid transparent; | |
animation: spinner 1.2s linear infinite; | |
} | |
@keyframes spinner2 { | |
to {transform: rotate(360deg);} | |
} | |
.spinner2:before { | |
content: ''; | |
box-sizing: border-box; | |
position: absolute; | |
width: 20px; | |
height: 20px; | |
border-radius: 50%; | |
border-bottom: 2px solid #00278c; | |
border-left: 2px solid transparent; | |
animation: spinner 1.2s linear infinite; | |
} | |
--> | |
</style> | |
<script type="text/javascript"> | |
<!--//<![CDATA[ | |
window.addEventListener("load", function() { | |
var button = document.createElement("button"); | |
button.appendChild(document.createTextNode("Export CSV")); | |
button.addEventListener("click", function() { | |
var json = toJSON(); | |
var csvData = ToCSV(); | |
// console.log(csvData); | |
var blob = new Blob([csvData], {type: 'text/csv'}); | |
var a = window.document.createElement('a'); | |
a.href = window.URL.createObjectURL(blob); | |
a.download = 'test.csv'; | |
// Append anchor to body. | |
document.body.appendChild(a); | |
a.click(); | |
// Remove anchor from body | |
document.body.removeChild(a); | |
}); | |
var logo = document.createElement("div"); | |
logo.id ="logo"; | |
var devLink = document.createElement("a"); | |
devLink.href ="http://in-situ.com/developer"; | |
devLink.target = "_blank"; | |
devLink.appendChild(document.createTextNode("How can I auto-import these files?")) | |
var devLinkDiv = document.createElement("div"); | |
devLinkDiv.id ="devLink"; | |
devLinkDiv.appendChild(devLink); | |
var styleHeader = document.createElement("div"); | |
styleHeader.id = "header"; | |
var spinner1Div = document.createElement("div"); | |
spinner1Div.class = "spinner"; | |
var spinner2Div = document.createElement("div"); | |
spinner2Div.class = "spinner2"; | |
var processingDiv = document.createElement("div"); | |
processingDiv.id = "processing"; | |
processingDiv.appendChild(spinner1Div); | |
processingDiv.appendChild(spinner2Div); | |
var buttonDiv = document.createElement("div"); | |
buttonDiv.id = "button"; | |
buttonDiv.appendChild(button); | |
buttonDiv.appendChild(processingDiv); | |
var body = document.body; | |
body.insertBefore(styleHeader, body.childNodes[0]); | |
body.insertBefore(devLinkDiv, body.childNodes[0]); | |
body.insertBefore(buttonDiv, body.childNodes[0]); | |
body.insertBefore(logo, body.childNodes[0]); | |
}); | |
function ToCSV() { | |
var newLine = "\r\n"; | |
var quote ="\""; | |
var csv = ""; | |
var delimiter = ","; | |
var propertyDelimiter = " = "; | |
var logNoteDelimiter = " "; | |
var dataTable = document.getElementById("isi-data-table"); | |
for (let row of dataTable.rows) { | |
for (let cell of row.cells) { | |
for (var index=0; index<cell.attributes.length; index++) { | |
var attribute = cell.attributes[index]; | |
switch (attribute.name) { | |
case "isi-property-section": | |
if (row.previousElementSibling != null) | |
csv += newLine; | |
var section = getSection(cell); | |
csv += sanitize(section.text) + newLine; | |
break; | |
case "isi-property": | |
var property = getProperty(cell); | |
csv += quote + sanitize(property.text) + propertyDelimiter + property.value + quote + newLine; | |
break; | |
case "isi-data-column=""-header": | |
csv += cell.previousElementSibling == null ? newLine + newLine : delimiter; | |
var columnHeader = getDataColumnHeader(cell); | |
csv += quote + sanitize(columnHeader.text) + quote; | |
if (cell.nextElementSibling == null) | |
csv += newLine; | |
break; | |
case "isi-data-column=""": | |
if (cell.previousElementSibling != null) | |
csv += delimiter; | |
var dataItem = getDataItem(cell); | |
csv += quote + sanitize(dataItem.value) + quote; | |
if (cell.nextElementSibling == null) | |
csv += newLine; | |
break; | |
case "isi-log-note-section": | |
csv += newLine; | |
var section = getSection(cell); | |
csv += sanitize(section.text) + newLine; | |
break; | |
case "isi-log-note": | |
var logNote = getLogNote(cell); | |
csv += quote + sanitize(logNote.timestamp) + logNoteDelimiter + logNote.text + quote + newLine; | |
break; | |
} | |
} | |
} | |
} | |
return csv; | |
} | |
function sanitize(strValue) { | |
return strValue | |
.replace(/"/g, "\"\"") | |
.replace(/\n/g, "") | |
.replace(/\r/g, "") | |
.replace(/\t/g, "") | |
.replace(/=/g, " ") | |
.trim(); | |
} | |
function getSection(node) { | |
var section = new Object(); | |
section.text = node.innerText; | |
return section; | |
} | |
function getDataItem(node) { | |
var dataItem = new Object(); | |
dataItem.value = node.innerText; | |
for (var index=0; index<node.attributes.length; index++) { | |
var attribute = node.attributes[index]; | |
switch (attribute.name) { | |
case "isi-timestamp": | |
dataItem.timestamp = attribute.value; | |
break; | |
} | |
} | |
return dataItem; | |
} | |
function getDataColumnHeader(node) { | |
var columnHeader = new Object(); | |
columnHeader.text = node.innerText; | |
for (var index=0; index<node.attributes.length; index++) { | |
var attribute = node.attributes[index]; | |
switch (attribute.name) { | |
case "isi-data-column=""": | |
columnHeader.type = attribute.value; | |
break; | |
case "isi-parameter-type": | |
columnHeader.parameterType = attribute.value; | |
break; | |
case "isi-unit-type": | |
columnHeader.unitType = attribute.value; | |
break; | |
case "isi-serial-number": | |
columnHeader.serialNumber = attribute.value; | |
break; | |
} | |
} | |
return columnHeader; | |
} | |
function getLogNote(node) { | |
var note = new Object(); | |
for (let child of node.children) { | |
for (var index=0; index<child.attributes.length; index++) { | |
var attribute = child.attributes[index]; | |
switch (attribute.name) { | |
case "isi-timestamp": | |
note.datetime = attribute.value; | |
note.timestamp = child.innerText; | |
break; | |
case "isi-log-note-type": | |
note.noteType = attribute.value; | |
note.text = child.innerText; | |
break; | |
} | |
} | |
} | |
return note; | |
} | |
function getProperty(node) { | |
var property = new Object(); | |
for (let child of node.children) { | |
for (var index=0; index<child.attributes.length; index++) { | |
var attribute = child.attributes[index]; | |
switch (attribute.name) { | |
case "isi-property-text=""": | |
property.text = child.innerText; | |
break; | |
case "isi-property-value=""": | |
property.value = child.innerText; | |
break; | |
} | |
} | |
} | |
return property; | |
} | |
function toJSON() { | |
var dataTable = document.getElementById("isi-data-table"); | |
var json = new Object(); | |
json.propertyGroups = []; | |
json.dataTable = new Object; | |
json.dataTable.headers = []; | |
json.dataTable.rows = []; | |
json.logNotes = []; | |
var lastPropertyGroup; | |
for (let row of dataTable.rows) { | |
for (let cell of row.cells) { | |
for (var index=0; index<cell.attributes.length; index++) { | |
var attribute = cell.attributes[index]; | |
switch (attribute.name) { | |
case "isi-property-section": | |
var section = getSection(cell); | |
json.propertyGroups[attribute.value] = lastPropertyGroup = new Object(); | |
lastPropertyGroup.text = section.text; | |
lastPropertyGroup.properties = []; | |
break; | |
case "isi-property": | |
var property = getProperty(cell); | |
lastPropertyGroup.properties[attribute.value] = property; | |
break; | |
case "isi-data-column=""-header": | |
var columnHeader = getDataColumnHeader(cell); | |
json.dataTable.headers.push(columnHeader); | |
break; | |
case "isi-data-column=""": | |
if (cell.previousElementSibling == null) | |
json.dataTable.rows.push([]); | |
var dataItem = getDataItem(cell); | |
json.dataTable.rows[json.dataTable.rows.length-1].push(dataItem); | |
break; | |
case "isi-log-note": | |
var logNote = getLogNote(cell); | |
json.logNotes.push(logNote); | |
break; | |
} | |
} | |
} | |
} | |
return json; | |
} | |
//]]--> | |
</script> | |
</head> | |
<body> | |
<table id="isi-data-table"> | |
<tr class="sectionHeader"> | |
<td isi-property-section="LocationProperties">Location Properties</td> | |
</tr> | |
<tr> | |
<td isi-section-member="LocationProperties" isi-property="Name"> | |
<span isi-property-text="">Location Name</span> = <span isi-property-value="">Well 123</span> | |
</td> | |
</tr> | |
<tr> | |
<td isi-property="GUID"> | |
<span isi-property-text="">Location GUID</span> = <span isi-property-value="">93aef679-8e9d-4fb6-865c-4ad11ae8dd75</span> | |
</td> | |
</tr> | |
<tr> | |
<td isi-property="Latitude"> | |
<span isi-property-text="">Latitude</span> = <span isi-property-value="">0</span> | |
</td> | |
</tr> | |
<tr> | |
<td isi-property="Longitude"> | |
<span isi-property-text="">Longitude</span> = <span isi-property-value="">0</span> | |
</td> | |
</tr> | |
<tr> | |
<td /> | |
</tr> | |
<tr class="sectionHeader"> | |
<td isi-property-section="ReportProperties">Report Properties</td> | |
</tr> | |
<tr> | |
<td isi-property="StartTime"> | |
<span isi-property-text="">Start Time</span> = <span isi-property-value="" isi-timestamp="123456">2017-08-31 15:04:16.629</span> | |
</td> | |
</tr> | |
<tr> | |
<td isi-property="Duration"> | |
<span isi-property-text="">Duration</span> = <span isi-property-value="">00:04:18</span> | |
</td> | |
</tr> | |
<tr> | |
<td isi-property="Readings"> | |
<span isi-property-text="">Readings</span> = <span isi-property-value="">6</span> | |
</td> | |
</tr> | |
<tr> | |
<td isi-property="TimeOffset"> | |
<span isi-property-text="">Time Offset</span> = <span isi-property-value="">-06:00:00</span> | |
</td> | |
</tr> | |
<tr> | |
<td /> | |
</tr> | |
<tr class="sectionHeader"> | |
<td isi-property-section="InstrumentProperties">Instrument Properties</td> | |
</tr> | |
<tr> | |
<td isi-property="Model"> | |
<span isi-property-text="">Device Model</span> = <span isi-property-value="" isi-device-type="8">Level TROLL 700</span> | |
</td> | |
</tr> | |
<tr> | |
<td isi-property="SerialNumber"> | |
<span isi-property-text="">Device SN</span> = <span isi-property-value="">465769</span> | |
</td> | |
</tr> | |
<tr> | |
<td isi-property="FirmwareVersion"> | |
<span isi-property-text="">Device Firmware</span> = <span isi-property-value="">3.03</span> | |
</td> | |
</tr> | |
<tr> | |
<td /> | |
</tr> | |
<tr class="sectionHeader"> | |
<td isi-property-section="LogProperties">Log Properties</td> | |
</tr> | |
<tr> | |
<td isi-property="LogType"> | |
<span isi-property-text="">Log Type</span> = <span isi-property-value="" isi-log-type="3">Linear</span> | |
</td> | |
</tr> | |
<tr> | |
<td isi-property="Name"> | |
<span isi-property-text="">Log Name</span> = <span isi-property-value="">CR25 Winter 2016</span> | |
</td> | |
</tr> | |
<tr> | |
<td isi-property="Guid"> | |
<span isi-property-text="">Log Guid</span> = <span isi-property-value="">93aef679-8e9d-4fb6-865c-4ad11ae8dd75</span> | |
</td> | |
</tr> | |
<tr> | |
<td isi-property="FileNumber"> | |
<span isi-property-text="">Log File Number</span> = <span isi-property-value="">2</span> | |
</td> | |
</tr> | |
<tr> | |
<td isi-property="Interval"> | |
<span isi-property-text="">Interval</span> = <span isi-property-value="">00:01:00</span> | |
</td> | |
</tr> | |
<tr> | |
<td isi-property="AveragingInterval"> | |
<span isi-property-text="">Averaging Interval</span> = <span isi-property-value="">00:01:00</span> | |
</td> | |
</tr> | |
<tr> | |
<td isi-property="AveragingSampleSize"> | |
<span isi-property-text="">Averaging Sample Size</span> = <span isi-property-value="">1</span> | |
</td> | |
</tr> | |
<tr> | |
<td isi-property="EventSamplingInterval"> | |
<span isi-property-text="">Event Sampling Interval</span> = <span isi-property-value="">00:01:00</span> | |
</td> | |
</tr> | |
<tr> | |
<td isi-property="EventDefaultInterval"> | |
<span isi-property-text="">Event Default Interval</span> = <span isi-property-value="">00:01:00</span> | |
</td> | |
</tr> | |
<tr> | |
<td isi-property="EventHighThreshold"> | |
<span isi-property-text="">Event High Threshold</span> = <span isi-property-value="">9</span> | |
</td> | |
</tr> | |
<tr> | |
<td isi-property="EventLowThreshold"> | |
<span isi-property-text="">Event Low Threshold</span> = <span isi-property-value="">1</span> | |
</td> | |
</tr> | |
<tr> | |
<td isi-property="EventChangeThreshold"> | |
<span isi-property-text="">Event Change Threshold</span> = <span isi-property-value="">1</span> | |
</td> | |
</tr> | |
<tr> | |
<td isi-property="EventChangeSinceLastLoggedThreshold"> | |
<span isi-property-text="">Event Change Since Last Logged Threshold</span> = <span isi-property-value="">?</span> | |
</td> | |
</tr> | |
<tr> | |
<td isi-property="LogWrapping"> | |
<span isi-property-text="">Log Wrapping</span> = <span isi-property-value="" isi-enabled="true" >Enabled</span> | |
</td> | |
</tr> | |
<tr> | |
<td isi-property="LogStepCount"> | |
<span isi-property-text="">Log Steps</span> = <span isi-property-value="">2</span> | |
</td> | |
</tr> | |
<tr> | |
<td isi-property="LogStepDuration"> | |
<span isi-property-text="">Log Step 1 Duration</span> = <span isi-property-value="">00:01:00</span> | |
</td> | |
</tr> | |
<tr> | |
<td isi-property="LogStepInterval"> | |
<span isi-property-text="">Log Step 1 Interval</span> = <span isi-property-value="">00:02:00</span> | |
</td> | |
</tr> | |
<tr> | |
<td isi-property="LogStepDuration"> | |
<span isi-property-text="">Log Step 2 Duration</span> = <span isi-property-value="">00:03:00</span> | |
</td> | |
</tr> | |
<tr> | |
<td isi-property="LogStepInterval"> | |
<span isi-property-text="">Log Step 2 Interval</span> = <span isi-property-value="">00:04:00</span> | |
</td> | |
</tr> | |
<tr> | |
<td /> | |
</tr> | |
<tr class="sectionHeader"> | |
<td isi-property-section="TestProperties">Test Properties</td> | |
</tr> | |
<tr> | |
<td isi-property="TestType"> | |
<span isi-property-text="">Test Type</span> = <span isi-property-value="" isi-test-type="LowFlow">Low Flow</span> | |
</td> | |
</tr> | |
<tr> | |
<td isi-property="StartTime"> | |
<span isi-property-text="">Test Date Time</span> = <span isi-property-value="">2017-08-31 15:04:16.629</span> | |
</td> | |
</tr> | |
<tr> | |
<td isi-property="TimeOffset"> | |
<span isi-property-text="">Time Offset</span> = <span isi-property-value="">-07:00:00</span> | |
</td> | |
</tr> | |
<tr> | |
<td isi-property="ProjectName"> | |
<span isi-property-text="">Project Name</span> = <span isi-property-value="">Trial #2</span> | |
</td> | |
</tr> | |
<tr> | |
<td isi-property="OperatorName"> | |
<span isi-property-text="">Operator Name</span> = <span isi-property-value="">Bob</span> | |
</td> | |
</tr> | |
<tr> | |
<td isi-property="FlowCellVolume"> | |
<span isi-property-text="">Flow Cell Volume</span> = <span isi-property-value="" isi-unit-type="1">1 cc</span> | |
</td> | |
</tr> | |
<tr> | |
<td isi-property="InitialDepthToWater"> | |
<span isi-property-text="">Initial Depth To Water</span> = <span isi-property-value="" isi-unit-type="1">1 ft</span> | |
</td> | |
</tr> | |
<tr> | |
<td isi-property="FinalDrawDown"> | |
<span isi-property-text="">Final Draw Down</span> = <span isi-property-value="" isi-unit-type="1">1 ft</span> | |
</td> | |
</tr> | |
<tr> | |
<td isi-property="TotalSystemVolume"> | |
<span isi-property-text="">Total System Volume</span> = <span isi-property-value="" isi-unit-type="1">1 cf</span> | |
</td> | |
</tr> | |
<tr> | |
<td isi-property="TotalPumpedVolume"> | |
<span isi-property-text="">Total Pumped Volume</span> = <span isi-property-value="" isi-unit-type="1">1 cf</span> | |
</td> | |
</tr> | |
<tr> | |
<td /> | |
</tr> | |
<tr class="sectionHeader"> | |
<td isi-property-section="WellProperties">Well Properties</td> | |
</tr> | |
<tr> | |
<td isi-property="CasingType"> | |
<span isi-property-text="">Casing Type</span> = <span isi-property-value="">Plastic</span> | |
</td> | |
</tr> | |
<tr> | |
<td isi-property="Diameter"> | |
<span isi-property-text="">Diameter</span> = <span isi-property-value="" isi-unit-type="1">2 in</span> | |
</td> | |
</tr> | |
<tr> | |
<td isi-property="TotalDepth"> | |
<span isi-property-text="">Total Depth</span> = <span isi-property-value="" isi-unit-type="1">2 in</span> | |
</td> | |
</tr> | |
<tr> | |
<td isi-property="DepthToScreen"> | |
<span isi-property-text="">Depth To Screen</span> = <span isi-property-value="" isi-unit-type="1">2 in</span> | |
</td> | |
</tr> | |
<tr> | |
<td isi-property="ScreenLength"> | |
<span isi-property-text="">Screen Length</span> = <span isi-property-value="" isi-unit-type="1">2 in</span> | |
</td> | |
</tr> | |
<tr> | |
<td /> | |
</tr> | |
<tr class="sectionHeader"> | |
<td isi-property-section="PumpProperties">Pump Properties</td> | |
</tr> | |
<tr> | |
<td isi-property="Model"> | |
<span isi-property-text="">Model</span> = <span isi-property-value="">HP3000</span> | |
</td> | |
</tr> | |
<tr> | |
<td isi-property="FlowRate"> | |
<span isi-property-text="">Rate</span> = <span isi-property-value="" isi-unit-type="1">2 in/s</span> | |
</td> | |
</tr> | |
<tr> | |
<td isi-property="Volume"> | |
<span isi-property-text="">Volume</span> = <span isi-property-value="" isi-unit-type="1">2 cc</span> | |
</td> | |
</tr> | |
<tr> | |
<td isi-property="IntakeFromTopOfCasing"> | |
<span isi-property-text="">Intake from TOC</span> = <span isi-property-value="" isi-unit-type="1">2 cc</span> | |
</td> | |
</tr> | |
<tr> | |
<td isi-property="FinalPumpingRate"> | |
<span isi-property-text="">Final Pumping Rate</span> = <span isi-property-value="" isi-unit-type="1">2 cc/s</span> | |
</td> | |
</tr> | |
<tr> | |
<td /> | |
</tr> | |
<tr class="sectionHeader"> | |
<td isi-property-section="TubingProperties">Tubing Properties</td> | |
</tr> | |
<tr> | |
<td isi-property="TubingType"> | |
<span isi-property-text="">Type</span> = <span isi-property-value="">Plastic</span> | |
</td> | |
</tr> | |
<tr> | |
<td isi-property="Diameter"> | |
<span isi-property-text="">Diameter</span> = <span isi-property-value="" isi-unit-type="1">2 in</span> | |
</td> | |
</tr> | |
<tr> | |
<td isi-property="Length"> | |
<span isi-property-text="">Length</span> = <span isi-property-value="" isi-unit-type="1">2 ft</span> | |
</td> | |
</tr> | |
<tr> | |
<td /> | |
</tr> | |
<tr> | |
<td /> | |
</tr> | |
<tr class="dataHeader" isi-data-table="foo"> | |
<td isi-data-column-header="datetime">Date Time</td> | |
<td isi-data-column-header="parameter" | |
isi-device-id="465769" | |
isi-sensor-id="465769" | |
isi-sensor-type="2" | |
isi-parameter-type="2" | |
isi-unit-type="2">Pressure (psi) (465769)</td> | |
<td isi-data-column-header="parameter" | |
isi-device-id="465769" | |
isi-sensor-id="465769" | |
isi-sensor-type="2" | |
isi-parameter-type="2" | |
isi-unit-type="2">Temperature (°C) (465769)</td> | |
<td isi-data-column-header="parameter" | |
isi-device-id="465769" | |
isi-sensor-id="465769" | |
isi-sensor-type="2" | |
isi-parameter-type="2" | |
isi-unit-type="2">Depth To Water (cm) (465769)</td> | |
<td isi-data-column-header="marked" | |
isi-marked="">Marked</td> | |
</tr> | |
<tr isi-data-table-row="foo" class="data"> | |
<td isi-data-column="" isi-timestamp="123456" class="date">8/31/17 15:04:17.000</td> | |
<td isi-data-column="">12.31928</td> | |
<td isi-data-column="">23.763</td> | |
<td isi-data-column="">9.842544</td> | |
<td isi-data-column=""/> | |
</tr> | |
<tr class="data"> | |
<td isi-data-column="" isi-timestamp="123456" class="date">8/31/17 15:05:16.630</td> | |
<td isi-data-column="">12.31463</td> | |
<td isi-data-column="">23.77313</td> | |
<td isi-data-column="">10.17007</td> | |
<td isi-data-column=""/> | |
</tr> | |
<tr class="data"> | |
<td isi-data-column="" isi-timestamp="123456" class="date">8/31/17 15:06:16.630</td> | |
<td isi-data-column="">12.31222</td> | |
<td isi-data-column="">23.78256</td> | |
<td isi-data-column="">10.33948</td> | |
<td isi-data-column=""/> | |
</tr> | |
<tr class="data"> | |
<td isi-data-column="" isi-timestamp="123456" class="date">8/31/17 15:06:33.859</td> | |
<td isi-data-column="">12.31582</td> | |
<td isi-data-column="">23.78979</td> | |
<td isi-data-column="">9.71341</td> | |
<td isi-data-column=""/> | |
</tr> | |
<tr class="data"> | |
<td isi-data-column="" isi-timestamp="123456" isi-marked="" class="date">8/31/17 15:07:33.859</td> | |
<td isi-data-column="" isi-marked="">12.31108</td> | |
<td isi-data-column="" isi-marked="">23.79341</td> | |
<td isi-data-column="" isi-marked="">10.04752</td> | |
<td isi-data-column="" isi-marked="">Marked</td> | |
</tr> | |
<tr class="data"> | |
<td isi-data-column="" isi-timestamp="123456" class="date">8/31/17 15:08:33.859</td> | |
<td isi-data-column="">12.31834</td> | |
<td isi-data-column="">23.80064</td> | |
<td isi-data-column="">9.536489</td> | |
<td isi-data-column=""/> | |
</tr> | |
<tr> | |
<td /> | |
</tr> | |
<tr class="sectionHeader"> | |
<td isi-log-note-section="">Log Notes</td> | |
</tr> | |
<tr> | |
<td isi-log-note="data:application/octet;base64,lkasdjflk"> | |
<span isi-timestamp="123456">2017-08-31 15:04:16.570</span> <span isi-note-text="">Started</span> | |
</td> | |
</tr> | |
<tr> | |
<td isi-log-note=""> | |
<span isi-timestamp="123457">2017-08-31 15:06:32.415</span> <span isi-log-note-type="4">Device Offline</span> | |
</td> | |
</tr> | |
<tr> | |
<td isi-log-note=""> | |
<span isi-timestamp="123458">2017-08-31 15:06:33.804</span> <span isi-log-note-type="3">Device Online</span> | |
</td> | |
</tr> | |
<tr> | |
<td isi-log-note=""> | |
<span isi-timestamp="123459">2017-08-31 15:08:52.880</span> <span isi-log-note-type="2">Stopped</span> | |
</td> | |
</tr> | |
<tr> | |
<td /> | |
</tr> | |
<tr> | |
<td /> | |
</tr> | |
<tr class="sectionHeader"> | |
<td isi-data-column-header="datetime">Date Time</td> | |
<td isi-data-column-header="elapsedTime">Elapsed Time</td> | |
<td isi-data-column-header="parameter" | |
isi-device-id="465769" | |
isi-sensor-id="465769" | |
isi-sensor-type="2" | |
isi-parameter-type="2" | |
isi-unit-type="2">Pressure (psi) (465769)</td> | |
<td isi-data-column-header="parameter" | |
isi-device-id="465769" | |
isi-sensor-id="465769" | |
isi-sensor-type="2" | |
isi-parameter-type="2" | |
isi-unit-type="2">Temperature (°C) (465769)</td> | |
<td isi-data-column-header="parameter" | |
isi-parameter-type="2" | |
isi-unit-type="2">Turbidity (NTU)</td> | |
</tr> | |
<tr class="data"> | |
<td isi-data-column="" isi-timestamp="123456" class="date">8/31/17 15:04:17.000</td> | |
<td isi-data-column="">00:01:00</td> | |
<td isi-data-column="">12.31928</td> | |
<td isi-data-column="">23.763</td> | |
<td isi-data-column="">99.2</td> | |
</tr> | |
<tr> | |
<td /> | |
</tr> | |
<tr class="sectionHeader"> | |
<td isi-lowflow-sample-section="">Samples</td> | |
</tr> | |
<tr> | |
<td isi-lowflow-sample=""> | |
<span isi-lowflow-sampleId="">Sample-801</span>: <span isi-lowflow-sample-value="">Pre Test Sample</span> | |
</td> | |
</tr> | |
<tr> | |
<td isi-lowflow-sample=""> | |
<span isi-lowflow-sampleId="">Sample-802</span>: <span isi-lowflow-sample-value="">Post Test Sample</span> | |
</td> | |
</tr> | |
<tr> | |
<td /> | |
</tr> | |
<tr class="sectionHeader"> | |
<td isi-lowflow-note-section="">Notes</td> | |
</tr> | |
<tr> | |
<td isi-lowflow-note=""> | |
<span isi-lowflow-note-type="TestNote">Test Note</span>: <span isi-lowflow-note-value="">Ended late, pump failed, replaced with HP5000</span> | |
</td> | |
</tr> | |
<tr> | |
<td isi-lowflow-note="Weather"> | |
<span isi-lowflow-note-key="">Weather Conditions</span>: <span isi-lowflow-note-value="">Cold, Breezy</span> | |
</td> | |
</tr> | |
</table> | |
</body> | |
</html> | |
<!-- 0JuY5T45+5InMNk4bB5Det1ZwSW2tmDM77SorGMXx5s= --> |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Excel HTML | |
description: HTML Previewer for Excel consumable HTML and CSV generator | |
normalize_css: no | |
wrap: h | |
panel_js: 0 | |
panel_css: 0 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment