Skip to content

Commit 39a5259

Browse files
Merge pull request #100 from codeforbtv/client-checkout-sheet
Client checkout sheet
2 parents bb68a22 + 9a6b342 commit 39a5259

File tree

8 files changed

+203
-23
lines changed

8 files changed

+203
-23
lines changed

extensionDirectory/components.js

Lines changed: 32 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,10 @@ Vue.component('filing-nav', {
3131
<a href="#extra-documents">Extra Documents</a>
3232
<ol>
3333
<li class="filing-nav__child-link">
34-
<a href="#clinic-checkout">Clinic Summary Sheet</a>
34+
<a href="#clinic-checkout">Clinic Record</a>
35+
</li>
36+
<li class="filing-nav__child-link">
37+
<a href="#client-checkout">Client Summary Sheet</a>
3538
</li>
3639
</ol>
3740
</li>
@@ -96,4 +99,32 @@ Vue.component('pills-row', {
9699
return duration.asDays()/365.25
97100
},
98101
}
102+
});
103+
104+
Vue.component('filing-type-heading', {
105+
methods: {
106+
getCheckoutPhrases(fType) {
107+
checkoutPhrases=[
108+
{type: "ExC", stipType: "StipExC", phrase: "The following are prior conviction(s) for which we prepared a petition to expunge:"},
109+
{type: "ExNC", stipType: "StipExNC", phrase: "The following are cases that DID NOT result in a conviction and we prepared a petition to expunge:"},
110+
{type: "ExNCrim", stipType: "StipExNCrim", phrase: "The following are counts that are no longer crimes and we prepared a petition to expunge:"},
111+
{type: "SC", stipType: "StipSC", phrase: "The following are prior convictions and we prepared a petition to seal:"},
112+
{type: "SDui", stipType: "StipSDui", phrase: "The following is a prior DUI conviction and we filed a petition to seal:"}
113+
]
114+
115+
for (i = 0; i<checkoutPhrases.length; i++) {
116+
if (checkoutPhrases[i]["type"] == fType || checkoutPhrases[i]["stipType"] == fType) {
117+
return checkoutPhrases[i]["phrase"]
118+
}
119+
}
120+
console.log(checkoutPhrases)
121+
}},
122+
template: (`
123+
<div>
124+
<p>
125+
{{getCheckoutPhrases(heading)}}
126+
</p>
127+
</div>
128+
`),
129+
props: ['heading']
99130
});

extensionDirectory/disclaimer.html

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
<!DOCTYPE html>
2+
<html lang="en">
3+
4+
<head>
5+
<title>Expunge VT Terms and Conditions</title>
6+
<link href="filings.css" rel="stylesheet" type="text/css">
7+
8+
9+
<!-- Bootstrap -->
10+
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css" integrity="sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO" crossorigin="anonymous">
11+
12+
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js" integrity="sha384-ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULTy" crossorigin="anonymous"></script>
13+
14+
15+
16+
</head>
17+
18+
<body id="disclaimer">
19+
<div class="disclaimer">
20+
<h1>Expunge VT Terms and Conditions</h1>
21+
<p>ExpungeVT is a tool created by Code for BTV in collaboration with Vermont Legal Aid (collectively the Contributors"). ExpungeVT, as referenced herein, is inclusive of, but is not limited to, the ExpungeVT Google Chrome extension, any associated or linked web page, any document generated through the extension or related page, and any other linked or otherwise related pages, documentation, materials or information.</p>
22+
<p>ExpungeVT is intended only for attorney use and should only be used by, or under the supervision of, a licensed Vermont attorney. Any information provided through ExpungeVT, expressly or impliedly, does not, and is not intended to, constitute legal advice. Instead, ExpungeVT is provided for general informational purposes only. Information obtained through ExpungeVT does not constitute the most up-to-date legal or other information and should be verified with a more direct source of legal of legal or factual authority. ExpungeVT contains links to other third-party websites. Such links are only for the convenience of the user. The Contributors and their members do not recommend or endorse the contents of the third-party sites.</p>
23+
<p>All liability with respect to actions taken or not taken based on information or materials obtained through ExpungeVT is hereby expressly disclaimed. ExpungeVT is provided "as is" and no representations are made that the content is error-free.</p>
24+
</div>
25+
</body>

extensionDirectory/filings.css

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,28 @@ a.btn {
2525
padding:4rem;
2626
}
2727

28+
.disclaimer {
29+
display: flex;
30+
flex-direction: column;
31+
justify-content: center;
32+
text-align: left;
33+
padding:4rem;
34+
max-width:800px;
35+
margin:auto;
36+
}
37+
.disclaimer-message {
38+
max-width: 65rem;
39+
width:70%;
40+
min-width:50rem;
41+
height: 100%;
42+
margin-left:17rem;
43+
margin-right:auto;
44+
margin-top:2rem;
45+
position: relative;
46+
padding:1.5rem;
47+
background-color:#eee;
48+
}
49+
2850
/* reset page font sizes */
2951
.page p, .page h1 {
3052
margin-bottom:0;
@@ -304,9 +326,39 @@ p.filing-dated-city {
304326
border-bottom: 1.5px solid #000;
305327
}
306328

329+
/* CHeckout sheet */
307330

331+
.client-checkout-header-left {
332+
width: 40%;
333+
margin-right: 10px;
334+
}
335+
.client-checkout-header-right {
336+
width: 55%;
337+
}
308338

339+
.pro-se {
340+
outline: 2px solid black;
341+
font-size: 18px !important;
342+
padding: 3px;
343+
}
344+
345+
.county-header {
346+
border-top: 3px solid black;
347+
/*border-bottom: 1px solid black;*/
348+
margin-bottom: 3px;
349+
}
309350

351+
.atty-note-box {
352+
border-bottom: 1px solid black;
353+
}
354+
355+
.client-text {
356+
width: 80% !important;
357+
}
358+
359+
.summary-table td {
360+
padding: 3px !important;
361+
}
310362

311363
@media screen {
312364
body {

extensionDirectory/filings.html

Lines changed: 63 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030

3131
<!-- Begin Vue App -->
3232

33+
3334
<div id="filing-app">
3435
<template v-if="saved.counts.length > 0 && (filings || ineligible)">
3536
<div v-if="petitioner.name" class="header-bar-wrapper no-print">
@@ -55,6 +56,7 @@ <h1>Filings for {{petitioner.name}}</h1>
5556
<tbody>
5657
<tr>
5758
<td>
59+
<section class="no-print disclaimer-message">Verify documents below against docket sheet to confirm information is accurate and complete. <br><a href="disclaimer.html" target="_blank">Terms and Conditions.</a></section>
5860
<section v-for="group in filings" v-bind:id="group.county">
5961
<article class="page" v-for="filing in group.filings" v-bind:id="filing.id">
6062

@@ -511,6 +513,67 @@ <h1>Filings for {{petitioner.name}} (DOB: {{petitioner.dob | dateFormatSimple}})
511513

512514
<!-- End Clinic Checkout Sheet -->
513515

516+
<!-- Client Checkout Sheet -->
517+
518+
<article class="page" id="client-checkout">
519+
<div class="filing-document">
520+
<div class="filing__title">Client Checkout Sheet</div>
521+
<p v-if="settings.proSe" class="pro-se">You are asking the court to clear your record without any more help from an attorney. You will have to respond to the court and the State on your own when asked to do so.</p>
522+
<div class="filing-body">
523+
<div class="title petition__title"></div>
524+
<div class="client-checkout-header filing-header">
525+
<div class="client-checkout-header-left filing-header__half">
526+
<h1>Filings for {{petitioner.name}} (DOB: {{petitioner.dob}})
527+
</h1>
528+
<p class="filing-closing__petitioner-address" v-html="petitioner.address"></p>
529+
<p class="filing-closing__phone">Phone: <span class="no-visible">{{responses['phone']}}</span>
530+
<input class="no-print" v-model="responses['phone']" placeholder="Petitioner Phone Number">
531+
</p>
532+
</div>
533+
<div class="client-checkout-header-right filing-header__half">
534+
The information describes our efforts to clear your record today. This includes information about records you can try to clear now and records that have to wait. We can't be sure that your entire criminal record is listed here. Contact Legal Aid at (800) 889-2047 if you have questions.
535+
</div>
536+
</div>
537+
<div class="county-header" v-for="group in filings">
538+
<b>{{group.county}} County<br>We found and reviewed {{group.filings[0].numCounts}} <template v-if="group.filings[0].numCounts > 1">counts</template><template v-else>count</template>:</b>
539+
<div v-for="filing in group.filings" v-if="filing.type !='NoA'">
540+
<filing-type-heading v-if="filing.numCounts > 0" v-bind:heading="filing.type"></filing-type-heading>
541+
<ul>
542+
<li v-for="count in filing.counts">
543+
You were charged with {{count.description}}.
544+
<p>
545+
Docket note: "{{count.offenseDisposition}}" - {{count.dispositionDate}}. (Docket# {{count.docketNum}} {{count.docketCounty}})
546+
</p>
547+
</li>
548+
</ul>
549+
<div class="atty-note-box">
550+
<span><textarea class="no-print client-text" v-model="responses[filing.id + 'summary']" v-bind:placeholder="'Type checkout notes for '+ group.county + ' here...'"></textarea></span>
551+
<p class="no-visible">Notes: <span v-html="nl2br(responses[filing.id + 'summary']) || ' '"></span></p>
552+
</div>
553+
</div>
554+
</div>
555+
<div scope="col" Colspan="3" v-if="ineligible.length > 0">
556+
557+
<b>You had {{ineligible.length}} <template v-if="ineligible.length > 1">counts</template><template v-else>count</template> that we did not file anything for today:</b>
558+
</p>
559+
<ul>
560+
<li v-for="(count, index) in ineligible">
561+
In <b>{{count.county}}</b> county, you were charged with {{count.description}}. On {{count.dispositionDate}}, the docket notes "{{count.offenseDisposition}}." (Docket# {{count.docketNum}} {{count.docketCounty}})
562+
<div>
563+
<textarea class="no-print client-text" v-model="responses['ineligiblesummary' + index]" placeholder="Type checkout notes for this ineligible count here..."></textarea>
564+
<p class="no-visible" v-html="nl2br(responses['ineligiblesummary' + index])"></p>
565+
566+
</div>
567+
</li>
568+
</ul>
569+
570+
</div>
571+
</div>
572+
</div>
573+
</article>
574+
575+
<!-- End Client Checkout Sheet -->
576+
514577
</section>
515578

516579
<!-- End Extra Documents -->
@@ -545,5 +608,3 @@ <h1>Filings for {{petitioner.name}} (DOB: {{petitioner.dob | dateFormatSimple}})
545608

546609

547610
</body>
548-
549-
</html>

extensionDirectory/filings.js

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,14 @@
11
const maxCountsOnNoA = 10;
22
Vue.config.devtools = true
33

4+
$(document).on('keydown', function(e) {
5+
if((e.ctrlKey || e.metaKey) && (e.key == "p" || e.charCode == 16 || e.charCode == 112 || e.keyCode == 80) ){
6+
e.cancelBubble = true;
7+
e.preventDefault();
8+
e.stopImmediatePropagation();
9+
app.printDocument();
10+
}
11+
});
412

513
function initAfterVue(){
614
//sets intital height of all text areas to show all text.
@@ -127,6 +135,8 @@ function countyCodeFromCounty(county) {
127135
return countyCodes[county]
128136
}
129137

138+
139+
130140
//Vue app
131141
var app = new Vue({
132142
el: '#filing-app',
@@ -305,7 +315,6 @@ var app = new Vue({
305315
}
306316
}
307317
}
308-
309318
//add all filings for this county to the returned filing object.
310319
groupedFilings.push(
311320
{county:countyName,

extensionDirectory/popup.css

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,7 @@ p.pet-detail {
122122
align-content: center;
123123
text-align: center;
124124
width: 100%;
125-
margin-top: 70px;
125+
margin-top: 40px;
126126
}
127127

128128
#mainButtonDiv {
@@ -159,9 +159,9 @@ p.pet-detail {
159159
white-space: nowrap;
160160
}
161161

162-
#vtCourtsOnline {
162+
.title-page__link {
163163
margin-top: 10px;
164-
margin-bottom: 20px;
164+
margin-bottom: 10px;
165165
width: 70%;
166166
text-align: center;
167167
margin-left: auto;

extensionDirectory/popup.html

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -39,9 +39,12 @@
3939
</div>
4040
<p id="introText">To begin, navigate to a court docket page relating to your client, and click the "Add Counts" button.
4141
</p>
42-
<a id="vtCourtsOnlineA" target="_blank" href="https://secure.vermont.gov/vtcdas/user">
42+
<a id="vtCourtsOnlineA" class="title-page__link" target="_blank" href="https://secure.vermont.gov/vtcdas/user">
4343
<p id="vtCourtsOnline"><b>VT Courts Online <i class="fas fa-external-link-alt"></i></b></p>
4444
</a>
45+
<a target="_blank" href="disclaimer.html" class="title-page__link">
46+
<p style="padding-bottom:30px;"><b>Terms &amp; Conditions <i class="fas fa-external-link-alt"></i></b></p>
47+
</a>
4548
</div>
4649
<div class="active-state" v-else>
4750
<div class="popTop">
@@ -86,8 +89,8 @@
8689
<div class="card-header__title-row">
8790
<div id="description-date" class="card-header__meta-data">
8891
<div class="card-header__description btn btn-link btn-sm" >
89-
<p v-if="count.docketNum">{{count.docketNum}} {{count.county | toCountyCode }}</p>
90-
<p v-if="count.description">{{count.description}}</p>
92+
<p v-if="count.docketNum"><b>{{count.docketNum}} {{count.county | toCountyCode }}</b></p>
93+
<p v-if="count.description"><b>{{count.description}}</b></p>
9194
</div>
9295
<p class='card-header__disposition-date' v-if="count.dispositionDate">Est. Disposition: {{count.dispositionDate | dateFormatSimple}} ({{count.dispositionDate | sinceNow}} ago)</p>
9396

@@ -111,21 +114,20 @@
111114
</div>
112115
<div class="card-header__bottom-row">
113116
<pills-row v-bind:count="count" v-bind:dob="saved.defDOB"></pills-row>
114-
<i class="fas fa-folder-minus" v-on:click="confirmDeleteCount($event,count.uid)"></i>
115117
</div>
116118
</div>
117119
</div>
118120

119121
<div class="collapse-section">
120122
<div class="card-body">
121-
<p>County:&nbsp;<b>{{count.county}}</b></p>
123+
<p>County:&nbsp;{{count.county}}</p>
122124

123-
<p v-if="count.titleNum || count.sectionNum">Statute:&nbsp;<b>{{count.titleNum}} V.S.A. <span v-if="count.sectionNum">&nbsp;&sect; {{count.sectionNum}}</span>&nbsp;({{count.offenseClass}})</b></p>
124-
<p>Disposition:&nbsp;<b>{{count.offenseDisposition}} <span v-if="!count.offenseDisposition">Check Docket Sheet</span></b></p>
125+
<p v-if="count.titleNum || count.sectionNum">Statute:&nbsp;{{count.titleNum}} V.S.A. <span v-if="count.sectionNum">&nbsp;&sect; {{count.sectionNum}}</span>&nbsp;({{count.offenseClass}})</p>
126+
<p>Disposition:&nbsp;{{count.offenseDisposition}} <span v-if="!count.offenseDisposition">Check Docket Sheet</span></p>
125127
<div class="row text-left">
126-
<div class="col-4">Offense Date:<br> <b>{{count.allegedOffenseDate | dateFormatSimple}} <span v-if="!count.allegedOffenseDate">&nbsp;Not Entered</span></b></div>
127-
<div class="col-4">Arrest/Citation Date:<br> <b>{{count.arrestCitationDate | dateFormatSimple}} <span v-if="!count.arrestCitationDate">&nbsp;Not Entered</span></b></div>
128-
<div class="col-4">Disposition Date:<br><b>{{count.dispositionDate | dateFormatSimple}} <span v-if="!count.dispositionDate">&nbsp;Pending</span></b></div>
128+
<div class="col-4">Offense Date:<br> {{count.allegedOffenseDate | dateFormatSimple}} <span v-if="!count.allegedOffenseDate">&nbsp;Not Entered</span></div>
129+
<div class="col-4">Arrest/Citation Date:<br> {{count.arrestCitationDate | dateFormatSimple}} <span v-if="!count.arrestCitationDate">&nbsp;Not Entered</span></div>
130+
<div class="col-4">Disposition Date:<br>{{count.dispositionDate | dateFormatSimple}} <span v-if="!count.dispositionDate">&nbsp;Pending</span></div>
129131
</div>
130132
</div>
131133
</div>

extensionDirectory/popup.js

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ function initListeners() {
1313
chrome.storage.local.set({
1414
counts: combinedData
1515
});
16-
\ });
16+
});
1717
});
1818
$('body').on('click', 'select.petitionSelect', function(event) {
1919
//prevents the select in the petition cards from opening the accordion.
@@ -36,18 +36,18 @@ function appendDataWithConfirmation(newData, oldData) {
3636

3737
var returnData = oldData
3838
var newCounts = newData.counts
39-
39+
var totalNumMatchingExistingCounts = 0
4040
for (count in newCounts) {
4141
var currentCount = newCounts[count]
4242
console.log(currentCount.uid)
43-
if (oldData.counts.filter(count => count.uid === currentCount.uid).length = 0) {
43+
var numMatchingExistingCounts = oldData.counts.filter(count => count.uid === currentCount.uid).length
44+
if (numMatchingExistingCounts == 0) {
4445
returnData.counts.push(currentCount)
46+
totalNumMatchingExistingCounts += numMatchingExistingCounts
4547
}
4648
}
4749

48-
var totalMatchCount = (oldData.counts.length + newData.counts.length) - returnData.counts.length
49-
50-
if (totalMatchCount > 0) {
50+
if (totalNumMatchingExistingCounts > 0) {
5151
alert(`${totalMatchCount} counts matched existing counts and were not added.`)
5252
}
5353

0 commit comments

Comments
 (0)