rsanchez
2017-03-14 3f6e91cbaf57d1d0c69ab30fee369ef4f0dbe2bf
#3527 fix - Fixing pack form
2 files deleted
5 files modified
changed files
securis/src/main/webapp/src/app/forms/pack.form.1.html patch | view | blame | history
securis/src/main/webapp/src/app/forms/pack.form.component.ts patch | view | blame | history
securis/src/main/webapp/src/app/forms/pack.form.html patch | view | blame | history
securis/src/main/webapp/src/app/pack.list.component.1.html patch | view | blame | history
securis/src/main/webapp/src/app/resources/licenses.ts patch | view | blame | history
securis/src/main/webapp/src/app/resources/packs.ts patch | view | blame | history
securis/src/main/webapp/src/lang/messages_en.json patch | view | blame | history
securis/src/main/webapp/src/app/forms/pack.form.1.html
deleted file mode 100644
....@@ -1,170 +0,0 @@
1
-<h3 md-dialog-title>{{form_title}}</h3>
2
-<form #packForm="ngForm" (keyup.enter)="save()">
3
-<md-dialog-content>
4
- <div layout="column" layout-align="start center">
5
- <div layout="row" layout-align="start center" layout-margin>
6
- <md-input-container flex>
7
- <input mdInput maxLength="50" type="text" [(ngModel)]="data.code" name="code" required />
8
- <md-placeholder>
9
- <span i18n>Code</span>
10
- </md-placeholder>
11
- </md-input-container>
12
- <!-- TODO: <div class="alert inline-alert alert-warning" ng-show="packForm.code.$invalid">
13
- <span class="glyphicon glyphicon-warning-sign"></span>
14
- <span ng-show="packForm.code.$error.maxlength" ng-bind="maxLengthErrorMsg('Code', maxlength.code)"
15
- class="ng-binding ng-hide">Code length is too long (max: 50).</span>
16
- <span ng-show="packForm.code.$error.required" ng-bind="mandatoryFieldErrorMsg('Code')" class="ng-binding">'Code' is required.</span>
17
- </div> -->
18
- <md-input-container flex>
19
- <input mdInput type="number" type="text" [(ngModel)]="data.num_licenses" name="num_licenses" required />
20
- <md-placeholder>
21
- <span i18n>Num. licenses</span>
22
- </md-placeholder>
23
- </md-input-container>
24
- </div>
25
- <div layout="row" layout-align="start center" layout-margin>
26
- <md-input-container flex>
27
- <input mdInput type="date" type="text" [(ngModel)]="data.init_valid_date" name="init_valid_date" required />
28
- <md-placeholder>
29
- <span i18n>Initial date</span>
30
- </md-placeholder>
31
- </md-input-container>
32
- <md-input-container flex>
33
- <input mdInput type="date" type="text" [(ngModel)]="data.end_valid_date" name="end_valid_date" required />
34
- <md-placeholder>
35
- <span i18n>End date</span>
36
- </md-placeholder>
37
- </md-input-container>
38
- </div>
39
- <div layout="row" layout-align="start center" layout-margin>
40
- <md-select flex placeholder="Organization" [(ngModel)]="data.organization_id" name="organization_id">
41
- <md-option *ngFor="let org of organizations" [value]="org.id">
42
- {{org.label}}
43
- </md-option>
44
- </md-select>
45
- <md-select flex placeholder="License type" [(ngModel)]="data.license_type_id" name="license_type_id">
46
- <md-option *ngFor="let lt of lictypes" [value]="lt.id">
47
- {{lt.label}}
48
- </md-option>
49
- </md-select>
50
- </div>
51
- </div>
52
-</md-dialog-content>
53
-<md-dialog-actions layout="row" layout-align="end center">
54
- <button flex [disabled]="!packForm.form.valid" md-raised-button color="primary" (click)="save()">Save</button>
55
- <button flex md-button (click)="close()">Cancel</button>
56
-</md-dialog-actions>
57
-</form>
58
-
59
-<!-- **************************************************************************************************
60
- **************************************************************************************************
61
- **************************************************************************************************
62
--->
63
-
64
-<div class="form-group">
65
-<label class="col-md-3 control-label" for="license_type_id" i18n="">License
66
- type</label>
67
-<div class="col-md-8">
68
- <!-- ngIf: isNew -->
69
- <select ng-if="isNew" class="form-control ng-pristine ng-untouched ng-scope ng-invalid ng-invalid-required" id="license_type_id"
70
- ng-change="updateMetadata()"
71
- ng-required="mandatory.license_type_id"
72
- ng-model="pack.license_type_id"
73
- ng-options="o.id as o.label for o in refs.license_type_id" required="required">
74
- <option value="" selected="selected" label=""></option><option value="0" label="CI ConfigServer ext">CI ConfigServer ext</option><option value="1" label="Analytic2">Analytic2</option><option value="2" label="Doxr L2">Doxr L2</option><option value="3" label="Doxr L3">Doxr L3</option><option value="4" label="CurisIntegrity - Desktop">CurisIntegrity - Desktop</option><option value="5" label="CurisIntegrity SA">CurisIntegrity SA</option><option value="6" label="Analytic1">Analytic1</option><option value="7" label="CurisIntegrity - List of modes">CurisIntegrity - List of modes</option><option value="8" label="CurisIntegrity for Curistec">CurisIntegrity for Curistec</option><option value="9" label="CurisIntegrity for BP">CurisIntegrity for BP</option><option value="10" label="CD_AllMod_AllCemtest_Custom_0U">CD_AllMod_AllCemtest_Custom_0U</option><option value="11" label="CurisIntegrity StandAlone - A1CPC">CurisIntegrity StandAlone - A1CPC</option><option value="12" label="CD_AllMod_AllCemtest_MIDtest_Custom_0U">CD_AllMod_AllCemtest_MIDtest_Custom_0U</option><option value="13" label="CI SA Complete">CI SA Complete</option><option value="14" label="CI for Dev Complete">CI for Dev Complete</option><option value="15" label="CD_RockMod_MIDtest_MIDSynth_Express_50U">CD_RockMod_MIDtest_MIDSynth_Express_50U</option><option value="16" label="CurisData for Sonatrach">CurisData for Sonatrach</option><option value="17" label="CD_AllMod_Alltest_Full_100_L_0S_0U">CD_AllMod_Alltest_Full_100_L_0S_0U</option><option value="18" label="CD_CementAdvMod_AllCemtest_Custom_100L_0S_0U">CD_CementAdvMod_AllCemtest_Custom_100L_0S_0U</option><option value="19" label="CD_CementAdvMod_AllCemtest_Custom_30U">CD_CementAdvMod_AllCemtest_Custom_30U</option><option value="20" label="CD_CementAdvMod_30U_10L_Express">CD_CementAdvMod_30U_10L_Express</option><option value="21" label="CD_CementAdv_Monolab">CD_CementAdv_Monolab</option><option value="22" label="Stand alone - MultiComputation">Stand alone - MultiComputation</option><option value="23" label="MultiCement">MultiCement</option><option value="24" label="CD_CementAdvMod_AllCemtest_Custom_100U">CD_CementAdvMod_AllCemtest_Custom_100U</option><option value="25" label="CI StandAlone A1">CI StandAlone A1</option><option value="26" label="CI StandAlone A1 A2 QL CementProperties">CI StandAlone A1 A2 QL CementProperties</option><option value="27" label="CI Corporate A1">CI Corporate A1</option><option value="28" label="CI Demo version">CI Demo version</option><option value="29" label="CD Complete">CD Complete</option></select>
75
- <!-- end ngIf: isNew -->
76
- <!-- ngIf: !isNew -->
77
- <div class="alert inline-alert alert-warning ng-hide" ng-show="packForm.license_type_id.$invalid">
78
- <span class="glyphicon glyphicon-warning-sign"></span> <span ng-show="packForm.license_type_id.$error.required" ng-bind="mandatoryFieldErrorMsg('License type')" class="ng-binding ng-hide">'License type' is required.</span>
79
- </div>
80
-</div>
81
-</div>
82
-
83
-<div class="form-group">
84
-<label class="col-md-3 control-label" for="organization_id" i18n="">Organization</label>
85
-<div class="col-md-8">
86
- <!-- ngIf: isNew --><select ng-if="isNew" class="form-control ng-pristine ng-untouched ng-scope ng-invalid ng-invalid-required" ng-model="pack.organization_id" ng-required="mandatory.organization_id" ng-options="o.id as o.label for o in refs.organization_id" required="required"><option value="" selected="selected" label=""></option><option value="0" label="British Petroleum">British Petroleum</option><option value="1" label="CurisTec">CurisTec</option><option value="2" label="KindSoft">KindSoft</option><option value="3" label="CurisIT">CurisIT</option><option value="4" label="Trican">Trican</option><option value="5" label="Schlumberger">Schlumberger</option><option value="6" label="Sonatrach">Sonatrach</option><option value="7" label="Sanjel-Taqa">Sanjel-Taqa</option><option value="8" label="National Petroleum Services Saudi Arabia Int.">National Petroleum Services Saudi Arabia Int.</option></select><!-- end ngIf: isNew -->
87
- <!-- ngIf: !isNew -->
88
- <div class="alert inline-alert alert-warning ng-hide" ng-show="packForm.organization_id.$invalid">
89
- <span class="glyphicon glyphicon-warning-sign"></span> <span ng-show="packForm.organization_id.$error.required" ng-bind="mandatoryFieldErrorMsg('Organization')" class="ng-binding ng-hide">'Organization' is required.</span>
90
- </div>
91
-</div>
92
-</div>
93
-<div class="form-group">
94
-<label class="col-md-3 control-label" for="license_preactivation" i18n="">License preactivation</label>
95
-<div class="col-md-8">
96
- <input type="checkbox" class="form-control ng-pristine ng-untouched ng-valid" ng-model="pack.license_preactivation">
97
-</div>
98
-</div>
99
-<div class="form-group">
100
-<label class="col-md-3 control-label" for="preactivation_valid_period" i18n="">Preactivation valid period (days)</label>
101
-<div class="col-md-8">
102
- <input type="number" id="preactivation_valid_period" name="preactivation_valid_period" min="1" class="form-control ng-pristine ng-untouched ng-valid ng-valid-min ng-valid-required" ng-model="pack.preactivation_valid_period" ng-required="pack.license_preactivation" required="required">
103
- <div class="alert inline-alert alert-warning ng-hide" ng-show="packForm.preactivation_valid_period.$invalid">
104
- <span class="glyphicon glyphicon-warning-sign"></span>
105
- <span ng-show="packForm.preactivation_valid_period.$error.required" ng-bind="mandatoryFieldErrorMsg('Preactivation valid period')" class="ng-binding ng-hide">'Preactivation valid period' is required.</span>
106
- <span ng-show="packForm.preactivation_valid_period.$error.min" ng-bind="field1ShouldBeGreaterThanField2('The preactivation valid period', '0')" class="ng-binding ng-hide">The preactivation valid period should be greater than 0</span>
107
- </div>
108
-</div>
109
-</div>
110
-<div class="form-group">
111
-<label class="col-md-3 control-label" for="renew_valid_period" i18n="">Period for renew (days)</label>
112
-<div class="col-md-8">
113
- <input type="number" id="renew_valid_period" name="renew_valid_period" min="0" class="form-control ng-pristine ng-untouched ng-valid-min ng-valid ng-valid-required" ng-model="pack.renew_valid_period" ng-required="true" required="required">
114
- <div class="alert inline-alert alert-warning ng-hide" ng-show="packForm.renew_valid_period.$invalid">
115
- <span class="glyphicon glyphicon-warning-sign"></span>
116
- <span ng-show="packForm.renew_valid_period.$error.required" ng-bind="mandatoryFieldErrorMsg('Period for renew')" class="ng-binding ng-hide">'Period for renew' is required.</span>
117
- <span ng-show="packForm.renew_valid_period.$error.min" ng-bind="field1ShouldBeGreaterThanField2('The period for renew valid period', '0')" class="ng-binding ng-hide">The period for renew valid period should be greater than 0</span>
118
- </div>
119
-</div>
120
-</div>
121
-
122
-
123
-<div class="form-group">
124
-<label class="col-md-3 control-label" for="comments" i18n="">Comments</label>
125
-<div class="col-md-8">
126
- <textarea type="string" id="comments" name="comments" placeholder="" class="form-control ng-pristine ng-untouched ng-valid ng-valid-maxlength ng-valid-required" ng-model="pack.comments" rows="2" ng-required="mandatory.comments" ng-maxlength="1024"></textarea>
127
- <div class="alert inline-alert alert-warning ng-hide" ng-show="packForm.comments.$invalid">
128
- <span class="glyphicon glyphicon-warning-sign"></span> <span ng-show="packForm.comments.$error.maxlength" ng-bind="maxLengthErrorMsg('Comments', maxlength.comments)" class="ng-binding ng-hide">Comments length is too long (max: 1024).</span>
129
- <span ng-show="packForm.comments.$error.required" ng-bind="mandatoryFieldErrorMsg('comments')" class="ng-binding ng-hide">'comments' is required.</span>
130
- </div>
131
-</div>
132
-</div>
133
-
134
-<!-- ngIf: !isNew -->
135
-
136
-<!-- ngIf: !isNew -->
137
-
138
-<div class="form-group">
139
-<label class="col-md-3 control-label" i18n="">Metadata</label>
140
-<div class="col-md-8">
141
- <table class="table table-hover table-condensed">
142
- <thead>
143
- <tr>
144
- <th i18n="">Key</th>
145
- <th i18n="">Value</th>
146
- </tr>
147
- </thead>
148
- <tbody>
149
- <!-- ngRepeat: row_md in pack.metadata -->
150
- </tbody>
151
- </table>
152
-</div>
153
-</div>
154
-
155
-<div class="form-group">
156
-<div class="col-md-offset-3 col-md-10">
157
- <button id="save" type="submit" class="btn btn-primary">
158
- <span i18n="" class="glyphicon glyphicon-floppy-disk"></span> Save
159
- </button>
160
- <!-- ngIf: !isNew -->
161
- <ul class="dropdown-menu" role="menu">
162
- <li><!-- ngIf: Packs.isActionAvailable('activate', pack) --><a ng-click="execute('activate')" ng-if="Packs.isActionAvailable('activate', pack)" href="#" class="ng-scope">Activate</a><!-- end ngIf: Packs.isActionAvailable('activate', pack) --></li>
163
- <li><!-- ngIf: Packs.isActionAvailable('putonhold', pack) --></li>
164
- <li class="divider"></li>
165
- <li><!-- ngIf: Packs.isActionAvailable('cancel', pack) --></li>
166
- <li><!-- ngIf: Packs.isActionAvailable('delete', pack) --><a ng-click="execute('delete')" ng-if="Packs.isActionAvailable('delete', pack)" href="#" class="ng-scope">Delete</a><!-- end ngIf: Packs.isActionAvailable('delete', pack) --></li>
167
- </ul>
168
-</div>
169
-</div>
170
-</form>
securis/src/main/webapp/src/app/forms/pack.form.component.ts
....@@ -80,7 +80,7 @@
8080 }
8181 );
8282 }
83
-
83
+
8484 changeLicType(event) {
8585 this.licenseTypes.get(this.data.license_type_id)
8686 .map(lt_data => lt_data.metadata)
securis/src/main/webapp/src/app/forms/pack.form.html
....@@ -40,6 +40,21 @@
4040 </div>
4141 <div layout="row" layout-fill layout-padding>
4242 <div layout="column" layout-fill flex>
43
+ <md-checkbox labelPosition="after" [(ngModel)]="data.license_preactivation" name="license_preactivation">
44
+ <span i18n="field.license_preactivation"></span>
45
+ </md-checkbox>
46
+ </div>
47
+ <div layout="column" layout-fill flex>
48
+ <div layout="column" class="mat-input-container" flex>
49
+ <label class="mat-input-placeholder mat-float">
50
+ <span class="placeholder" i18n="field.status"></span>
51
+ </label>
52
+ <div class="label-value mat-input-element">{{packs.getStatusName(data.status)}}</div>
53
+ </div>
54
+ </div>
55
+ </div>
56
+ <div layout="row" layout-fill layout-padding>
57
+ <div layout="column" layout-fill flex>
4358 <md-input-container flex>
4459 <input mdInput type="date" [(ngModel)]="data.init_valid_date" name="init_valid_date" required />
4560 <md-placeholder>
securis/src/main/webapp/src/app/pack.list.component.1.html
deleted file mode 100644
....@@ -1,112 +0,0 @@
1
-<td-layout-nav-list #navList
2
- logo="assets:covalent"
3
- toolbarTitle="Email App"
4
- class="light-blue-red"
5
- [opened]="media.registerQuery('gt-sm') | async"
6
- [mode] = "side"
7
- [sidenavWidth]="(media.registerQuery('gt-xs') | async) ? '350px' : '100%'">
8
- <div td-toolbar-content layout="row" layout-align="start center" flex>
9
- <span flex *ngIf="!searchBox.searchVisible"></span>
10
- <td-search-box #searchBox backIcon="arrow_back" class="pull-top-sm pull-bottom-sm" placeholder="Search here" flex>
11
- </td-search-box>
12
- <button md-icon-button [mdMenuTriggerFor]="notificationsMenu">
13
- <td-notification-count color="accent" [notifications]="4">
14
- <md-icon>apps</md-icon>
15
- </td-notification-count>
16
- </button>
17
- <md-menu #notificationsMenu="mdMenu">
18
- <td-menu>
19
- <div td-menu-header class="md-subhead">Templates</div>
20
- <md-nav-list dense>
21
- <a md-list-item [routerLink]="['/templates']">
22
- <md-icon md-list-avatar>system_update_alt</md-icon>
23
- <h4 md-line><span class="text-wrap">Landing Page</span></h4>
24
- <p md-line>a landing page template</p>
25
- </a>
26
- <md-divider></md-divider>
27
- <a md-list-item [routerLink]="['/templates/dashboard']">
28
- <md-icon md-list-avatar>dashboard</md-icon>
29
- <h4 md-line><span class="text-wrap">Dashboard</span></h4>
30
- <p md-line>an ngx-charts dashboard template</p>
31
- </a>
32
- <md-divider></md-divider>
33
- <a md-list-item [routerLink]="['/templates/email']">
34
- <md-icon md-list-avatar>email</md-icon>
35
- <h4 md-line><span class="text-wrap">Email App</span></h4>
36
- <p md-line>an email app template</p>
37
- </a>
38
- <md-divider></md-divider>
39
- <a md-list-item [routerLink]="['/templates/editor']">
40
- <md-icon md-list-avatar>view_array</md-icon>
41
- <h4 md-line><span class="text-wrap">IDE Editor</span></h4>
42
- <p md-line>an IDE text editor app template</p>
43
- </a>
44
- </md-nav-list>
45
- <a md-button color="accent" td-menu-footer href="https://github.com/Teradata/covalent-quickstart/tree/develop/src/app/templates" target="_blank">
46
- View Code
47
- </a>
48
- </td-menu>
49
- </md-menu>
50
- <a md-icon-button mdTooltip="View this code" href="https://github.com/Teradata/covalent-quickstart/tree/develop/src/app/templates" target="_blank"><md-icon svgIcon="assets:github"></md-icon></a>
51
- </div>
52
- <a md-fab td-sidenav-content color="accent" class="md-fab-position-bottom-right" style="bottom:20px; position: fixed;">
53
- <md-icon>add</md-icon>
54
- </a>
55
- <md-nav-list td-sidenav-content >
56
- <template let-i="index" let-last="last" let-hero ngFor [ngForOf]="heroes" [ngForTrackBy]="trackById">
57
- <a md-list-item>
58
- <img md-list-avatar src="http://lorempixel.com/40/40/people/{{i+1}}" />
59
- <h3 md-line> {{hero.name}} </h3>
60
- <p md-line> Hero ID is: {{hero.id}} </p>
61
- <md-icon class="tc-amber-800">fiber_new</md-icon>
62
- </a>
63
- <md-divider *ngIf="!last" md-inset></md-divider>
64
- </template>
65
- </md-nav-list>
66
- <md-card tdMediaToggle="gt-xs" [mediaClasses]="['side']">
67
- <md-card-header>
68
- <img md-card-avatar src="http://lorempixel.com/40/40/people/9" />
69
- <md-card-title>Firstname Lastname</md-card-title>
70
- <md-card-subtitle>Tuesday, January 3 2017 at 8:39 PM</md-card-subtitle>
71
- <span flex></span>
72
- <div class="pad-top pad-right">
73
- <button md-icon-button><md-icon>reply</md-icon></button>
74
- <button md-icon-button><md-icon>forward</md-icon></button>
75
- <button md-icon-button><md-icon>more_vert</md-icon></button>
76
- </div>
77
- </md-card-header>
78
- <md-divider></md-divider>
79
- <div class="md-padding">
80
- <p>
81
- Leverage agile frameworks to provide a robust synopsis for high level overviews. Iterative approaches to corporate strategy foster collaborative thinking to further the overall value proposition. Organically grow the holistic world view of disruptive innovation via workplace diversity and empowerment.
82
- </p>
83
- <p>
84
- Bring to the table win-win survival strategies to ensure proactive domination. At the end of the day, going forward, a new normal that has evolved from generation X is on the runway heading towards a streamlined cloud solution. User generated content in real-time will have multiple touchpoints for offshoring.
85
- </p>
86
- <p>
87
- Capitalize on low hanging fruit to identify a ballpark value added activity to beta test. Override the digital divide with additional clickthroughs from DevOps. Nanotechnology immersion along the information highway will close the loop on focusing solely on the bottom line.
88
- </p>
89
- <p>
90
- Podcasting operational change management inside of workflows to establish a framework. Taking seamless key performance indicators offline to maximise the long tail. Keeping your eye on the ball while performing a deep dive on the start-up mentality to derive convergence on cross-platform integration.
91
- </p>
92
- <p>
93
- Sincerly<br>-Kimmie
94
- </p>
95
- </div>
96
- <md-divider></md-divider>
97
- <div layout="row" layout-align="space-around center" class="pad">
98
- <button md-button class="tc-grey-600">
99
- <md-icon class="pull-bottom">reply</md-icon>
100
- <div class="md-caption">Reply</div>
101
- </button>
102
- <button md-button class="tc-grey-600">
103
- <md-icon class="pull-bottom">reply_all</md-icon>
104
- <div class="md-caption">Reply All</div>
105
- </button>
106
- <button md-button class="tc-grey-600">
107
- <md-icon class="pull-bottom">forward</md-icon>
108
- <div class="md-caption">Forward</div>
109
- </button>
110
- </div>
111
- </md-card>
112
-</td-layout-nav-list>
securis/src/main/webapp/src/app/resources/licenses.ts
....@@ -39,16 +39,6 @@
3939 CANCELLED: 'CA'
4040 }
4141
42
-export const LIC_STATUSES = {
43
- 'CR': 'Created',
44
- 'AC': 'Active',
45
- 'PA': 'Pre-active',
46
- 'RE': 'Requested',
47
- 'EX': 'Expired',
48
- 'BL': 'Blocked',
49
- 'CA': 'Cancelled'
50
-};
51
-
5242 /**
5343 * These transitions could be get from server, class License.Status, but
5444 * we copy them for simplicity, this info won't change easily
securis/src/main/webapp/src/app/resources/packs.ts
....@@ -2,6 +2,7 @@
22 import { Injectable } from '@angular/core';
33 import { Http, RequestOptions } from '@angular/http';
44 import { SeCurisResourceServices } from './base';
5
+import { LocaleService } from '../common/i18n';
56
67 var pack_example = {
78 id: 7,
....@@ -40,14 +41,6 @@
4041 CANCELLED: 'CA'
4142 }
4243
43
-export const PACK_STATUSES = {
44
- 'CR': 'Created',
45
- 'AC': 'Active',
46
- 'OH': 'On Hold',
47
- 'EX': 'Expired',
48
- 'CA': 'Cancelled'
49
- };
50
-
5144 export const COLORS_BY_STATUS = {
5245 'CR': '#808080',
5346 'AC': '#329e5a',
....@@ -67,7 +60,7 @@
6760
6861 @Injectable()
6962 export class PacksService extends SeCurisResourceServices {
70
- constructor(http: Http) {
63
+ constructor(http: Http, private $L: LocaleService) {
7164 super(http, 'pack');
7265 }
7366
....@@ -88,5 +81,9 @@
8881 return pack && validStatuses && validStatuses.indexOf(pack.status) !== -1;
8982 }
9083
84
+ getStatusName(statusCode: string): string {
85
+ return this.$L.get(`pack.status.${statusCode}`, this.$L.get('Unknown'));
86
+ }
87
+
9188 }
9289
securis/src/main/webapp/src/lang/messages_en.json
....@@ -18,5 +18,18 @@
1818 "field.key": "Parameter",
1919 "field.value": "Value",
2020 "field.comments": "Comments",
21
+ "pack.status.CR": "Created",
22
+ "pack.status.AC": "Active",
23
+ "pack.status.OH": "On Hold",
24
+ "pack.status.EX": "Expired",
25
+ "pack.status.CA": "Cancelled",
26
+ "license.status.CR": "Created",
27
+ "license.status.AC": "Active",
28
+ "license.status.PA": "Pre-active",
29
+ "license.status.RE": "Requested",
30
+ "license.status.EX": "Expired",
31
+ "license.status.BL": "Blocked",
32
+ "license.status.CA": "Cancelled",
2133 "": ""
22
-}
34
+}
35
+