2 ============LICENSE_START==================================================
4 ===========================================================================
5 Copyright (C) 2017-2018 AT&T Intellectual Property. All rights reserved.
6 ===========================================================================
7 Licensed under the Apache License, Version 2.0 (the "License");
8 you may not use this file except in compliance with the License.
9 You may obtain a copy of the License at
11 http://www.apache.org/licenses/LICENSE-2.0
13 Unless required by applicable law or agreed to in writing, software
14 distributed under the License is distributed on an "AS IS" BASIS,
15 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 See the License for the specific language governing permissions and
17 limitations under the License.
18 ============LICENSE_END====================================================
20 <div ng-controller="decisionPolicyController">
23 <div class="form-group row">
24 <div class="form-group col-sm-6">
25 <label>Policy Name:<sup><b>*</b></sup></label> <input type="text"
26 class="form-control" ng-disabled="temp.policy.readOnly"
27 ng-readonly="temp.policy.editPolicy"
28 ng-model="temp.policy.policyName" required pattern="\S+"
29 title="Enter Policy Name without any spaces and special characters and will accept _." />
31 <div ng-show="notRawPolicy" class="form-group col-sm-6">
32 <label>Description:</label> <input type="text" class="form-control"
33 ng-disabled="temp.policy.readOnly"
34 ng-model="temp.policy.policyDescription"
35 title="Description field will accept any type of data." />
38 <div ng-show="notRawPolicy" class="form-group row">
39 <div class="form-group col-sm-6">
40 <label>Onap Name:<sup><b>*</b></sup></label> <select
41 class="form-control" ng-disabled="temp.policy.readOnly"
42 ng-model="temp.policy.onapName"
43 ng-options="option for option in onapNameDictionaryDatas track by option"
44 required pattern="\S+"
45 title="Select the dropdown value driven from OnapName (common)Dictionary."></select>
47 <div class="form-group col-sm-6">
48 <label>Rule Provider:<sup><b>*</b></sup></label><select
49 class="form-control" ng-disabled="temp.policy.readOnly"
50 ng-model="temp.policy.ruleProvider"
51 ng-init="providerListener(temp.policy.ruleProvider);"
52 ng-click="providerListener(temp.policy.ruleProvider);">
53 <option>Custom</option>
55 <option>Rainy_Day</option>
56 <option>GUARD_YAML</option>
57 <option>GUARD_BL_YAML</option>
58 <option>GUARD_MIN_MAX</option>
64 <div ng-if="temp.policy.ruleProvider == 'Raw'">
66 <div class="form-group row">
67 <div class="form-group col-sm-12">
68 <label>Raw Policy:<sup><b>*</b></sup></label>
69 <textarea class="form-control" ng-disabled="temp.policy.readOnly"
70 ng-model="temp.policy.rawXacmlPolicy" style="height: 400px;"
71 required title="Enter the Raw XACML Policy."></textarea>
76 <div ng-if="temp.policy.ruleProvider == 'Rainy_Day'">
78 <div class="form-group row">
79 <div class="form-group row">
80 <div class="form-group col-sm-1">
81 <label>Service Type:<sup><b>*</b></sup></label>
83 <div class="form-group col-sm-2">
84 <input type="text" class="form-control"
85 ng-disabled="temp.policy.readOnly"
86 ng-model="temp.policy.rainyday.serviceType"
87 placeholder="Service Type" title="Enter Service Type value." />
89 <div class="form-group col-sm-1">
90 <label>VNF Type:<sup><b>*</b></sup></label>
92 <div class="form-group col-sm-2">
93 <input type="text" class="form-control"
94 ng-disabled="temp.policy.readOnly"
95 ng-model="temp.policy.rainyday.vnfType" placeholder="VNF Type"
96 title="Enter VNF Type value." />
98 <div class="form-group col-sm-1">
99 <label>Building Block ID:<sup><b>*</b></sup></label>
101 <div class="form-group col-sm-2">
102 <select class="form-control" ng-disabled="temp.policy.readOnly"
103 ng-model="temp.policy.rainyday.bbid"
104 ng-options="option for option in rainyDayDictionaryDatas track by option"
105 ng-change="getWorkstepValues(temp.policy.rainyday.bbid)"
106 title="Select the dropdown value driven from Rainday Allowed Treatments (Decision)Dictionary.">
107 <option value="">{{temp.policy.rainyday.bbid}}</option>
110 <div class="form-group col-sm-1">
111 <label>Work Step:<sup><b>*</b></sup></label>
113 <div class="form-group col-sm-2">
114 <select class="form-control" ng-disabled="temp.policy.readOnly"
115 ng-model="temp.policy.rainyday.workstep"
116 ng-options="option for option in workstepDictionaryDatas track by option"
117 ng-change="getTreatmentValues(temp.policy.rainyday.bbid, temp.policy.rainyday.workstep)">
118 <option value="">{{temp.policy.rainyday.workstep}}</option>
122 <div class="form-group row">
123 <div class="form-group col-sm-3">
124 <label>Desired Automated Treatments:</label>
125 <button type="button" class="btn btn-default"
126 ng-disabled="temp.policy.readOnly" ng-click="addNewTreatment()">
127 <i class="fa fa-plus"></i>
131 <div class="form-group row">
133 data-ng-repeat="treatmentTableChoice in temp.policy.rainyday.treatmentTableChoices">
134 <div class="form-group row" style="margin-left: 2%">
135 <div class="form-group col-sm-1">
136 <label>Error Code:<sup><b>*</b></sup></label>
138 <div class="form-group col-sm-3">
139 <input type="text" class="form-control"
140 ng-disabled="temp.policy.readOnly"
141 ng-model="treatmentTableChoice.errorcode"
142 placeholder="Error Code" />
144 <div class="form-group col-sm-1">
145 <label>Desired Treatment:<sup><b>*</b></sup></label>
147 <div class="form-group col-sm-3">
148 <select class="form-control" ng-disabled="temp.policy.readOnly"
149 ng-model="treatmentTableChoice.treatment"
150 ng-options="option for option in allowedTreatmentsDatas track by option">
151 <option value="">{{treatmentTableChoice.treatment}}</option>
154 <div class="form-group col-sm-1">
155 <button type="button" class="btn btn-default"
156 ng-disabled="temp.policy.readOnly"
157 ng-click="removeTreatment()">
158 <i class="fa fa-minus"></i>
167 <div ng-if="temp.policy.ruleProvider == 'GUARD_BL_YAML'">
169 <div class="form-group row">
170 <div class="form-group col-sm-1">
171 <label>Guard BlackList YAML Attributes:</label><br>
174 <div class="form-group row">
175 <div class="form-group row" style="margin-left: 2%">
176 <div class="form-group col-sm-3">
177 <label> actor: </label>
179 <div class="form-group col-sm-3">
180 <input type="text" class="form-control"
181 ng-disabled="temp.policy.readOnly"
182 ng-model="temp.policy.yamlparams.actor" placeholder="Actor" />
185 <div class="form-group row" style="margin-left: 2%">
186 <div class="form-group col-sm-3">
187 <label> recipe: </label>
189 <div class="form-group col-sm-3">
190 <input type="text" class="form-control"
191 ng-disabled="temp.policy.readOnly"
192 ng-model="temp.policy.yamlparams.recipe" placeholder="Recipe" />
195 <div class="form-group row" style="margin-left: 2%">
196 <div class="form-group col-sm-3">
197 <label> CLName: </label>
199 <div class="form-group col-sm-3">
200 <input type="text" class="form-control"
201 ng-disabled="temp.policy.readOnly"
202 ng-model="temp.policy.yamlparams.clname" placeholder="CLName" />
205 <div class="form-group row" style="margin-left: 2%">
206 <div class="form-group col-sm-3">
207 <label> guardActiveStart: </label>
209 <div class="form-group col-sm-3">
210 <input type="text" class="form-control"
211 ng-disabled="temp.policy.readOnly"
212 ng-model="temp.policy.yamlparams.guardActiveStart"
213 placeholder="00:00:00-05:00" />
216 <div class="form-group row" style="margin-left: 2%">
217 <div class="form-group col-sm-3">
218 <label> guardActiveEnd: </label>
220 <div class="form-group col-sm-3">
221 <input type="text" class="form-control"
222 ng-disabled="temp.policy.readOnly"
223 ng-model="temp.policy.yamlparams.guardActiveEnd"
224 placeholder="00:00:00-05:00" />
227 <div class="form-group row" style="margin-left: 2%">
228 <div class="form-group col-sm-3">
229 <label> BlackList Entry Type: </label>
231 <div class="form-group col-sm-3">
232 <select class="form-control"
233 ng-model="temp.policy.blackListEntryType"
234 ng-disabled="temp.policy.readOnly"
235 ng-change="initializeBlackList(temp.policy.blackListEntryType)">
236 <option>Use Manual Entry</option>
237 <option>Use File Upload</option>
241 <div class="form-group row" style="margin-left: 2%">
242 <div class="form-group col-sm-3">
243 <label>Export BlackList Entries:</label>
245 <div class="form-group col-sm-3">
246 <button type="button" class="btn btn-default"
247 ng-disabled="disableOnCreate"
248 ng-click="exportBlackListEntries()">Export BlackList</button>
251 <div ng-if="temp.policy.blackListEntryType == 'Use File Upload'"
252 class="form-group row" style="margin-left: 2%">
253 <div class="form-group col-sm-3">
254 <label>Upload BlackList: </label>
256 <div class="form-group col-sm-4">
257 <input type="file" name="file" class="form-control"
259 onchange="angular.element(this).scope().uploadBLFile(this.files)" />
261 <div class="form-group col-sm-2">
262 <button class="btn btn-primary" ng-disabled="importButton"
263 ng-click="submitUpload()">Upload</button>
266 <div ng-if="temp.policy.blackListEntryType == 'Use File Upload'"
267 class="form-group row" style="margin-left: 2%">
268 <div class="form-group col-sm-3">
269 <label>Search BlackList: </label>
271 <div class="form-group col-sm-4">
272 <input type="text" class="form-control" class="search"
273 placeholder="{{'search'}}..." ng-model="search"> <select
274 class="form-control" multiple ng-disabled="true"
275 style="height: 400px;"
276 ng-model="temp.policy.blackListSearchEntry"
277 ng-options="option for option in blackListEntries | filter:search"></select>
280 <div ng-if="temp.policy.blackListEntryType == 'Use Manual Entry'"
281 class="form-group row" style="margin-left: 2%">
282 <div class="form-group col-sm-3">
283 <label> BlackList: </label>
284 <button type="button" class="btn btn-default"
285 ng-disabled="temp.policy.readOnly" ng-click="addNewBL()">
286 <i class="fa fa-plus"></i>
289 <div class="form-group col-sm-4">
291 data-ng-repeat="choice in temp.policy.yamlparams.blackList track by $index">
292 <div class="form-group row">
293 <div class="form-group col-sm-9">
294 <input type="text" class="form-control"
295 ng-disabled="temp.policy.readOnly"
296 ng-model="temp.policy.yamlparams.blackList[$index]"
297 placeholder="BlackList" />
299 <div class="form-group col-sm-1">
300 <button type="button" class="btn btn-default"
301 ng-disabled="temp.policy.readOnly"
302 ng-click="removeBL(temp.policy.yamlparams.blackList[$index])">
303 <i class="fa fa-minus"></i>
314 <div ng-if="temp.policy.ruleProvider == 'GUARD_YAML'">
316 <div class="form-group row">
317 <div class="form-group col-sm-1">
318 <label>Guard YAML Attributes:</label><br>
321 <div class="form-group row">
322 <div class="form-group row" style="margin-left: 2%">
323 <div class="form-group col-sm-3">
324 <label> actor: </label>
326 <div class="form-group col-sm-3">
327 <input type="text" class="form-control"
328 ng-disabled="temp.policy.readOnly"
329 ng-model="temp.policy.yamlparams.actor" placeholder="Actor" />
332 <div class="form-group row" style="margin-left: 2%">
333 <div class="form-group col-sm-3">
334 <label> recipe: </label>
336 <div class="form-group col-sm-3">
337 <input type="text" class="form-control"
338 ng-disabled="temp.policy.readOnly"
339 ng-model="temp.policy.yamlparams.recipe" placeholder="Recipe" />
342 <div class="form-group row" style="margin-left: 2%">
343 <div class="form-group col-sm-3">
344 <label> CLName: </label>
346 <div class="form-group col-sm-3">
347 <input type="text" class="form-control"
348 ng-disabled="temp.policy.readOnly"
349 ng-model="temp.policy.yamlparams.clname" placeholder="CLName" />
352 <div class="form-group row" style="margin-left: 2%">
353 <div class="form-group col-sm-3">
354 <label> Targets: </label>
355 <button type="button" class="btn btn-default"
356 ng-disabled="temp.policy.readOnly" ng-click="addNewTarget()">
357 <i class="fa fa-plus"></i>
360 <div class="form-group col-sm-4">
362 data-ng-repeat="choice in temp.policy.yamlparams.targets track by $index">
363 <div class="form-group row">
364 <div class="form-group col-sm-9">
365 <input type="text" class="form-control"
366 ng-disabled="temp.policy.readOnly"
367 ng-model="temp.policy.yamlparams.targets[$index]"
368 placeholder="Target" />
370 <div class="form-group col-sm-1">
371 <button type="button" class="btn btn-default" ng-show="$last"
372 ng-disabled="temp.policy.readOnly" ng-click="removeTarget()">
373 <i class="fa fa-minus"></i>
380 <div class="form-group row" style="margin-left: 2%">
381 <div class="form-group col-sm-3">
382 <label> limit: </label>
384 <div class="form-group col-sm-3">
385 <input type="text" class="form-control"
386 ng-disabled="temp.policy.readOnly"
387 ng-model="temp.policy.yamlparams.limit" placeholder="Limit"
388 title="Enter time limit value." />
391 <div class="form-group row" style="margin-left: 2%">
392 <div class="form-group col-sm-3">
393 <label> timeWindow: </label>
395 <div class="form-group col-sm-2">
396 <input type="text" class="form-control"
397 ng-disabled="temp.policy.readOnly"
398 ng-model="temp.policy.yamlparams.timeWindow"
399 placeholder="Time Window" title="Enter time window value." />
401 <div class="form-group col-sm-1">
402 <select class="form-control" ng-disabled="temp.policy.readOnly"
403 ng-model="temp.policy.yamlparams.timeUnits"
404 title="Select the Time Units value from dropdown options.">
405 <option>minute</option>
406 <option>hour</option>
408 <option>week</option>
409 <option>month</option>
410 <option>year</option>
414 <div class="form-group row" style="margin-left: 2%">
415 <div class="form-group col-sm-3">
416 <label> guardActiveStart: </label>
418 <div class="form-group col-sm-3">
419 <input type="text" class="form-control"
420 ng-disabled="temp.policy.readOnly"
421 ng-model="temp.policy.yamlparams.guardActiveStart"
422 title="Enter Guard Active Start value in following patren '00:00:00-05:00'."
423 placeholder="00:00:00-05:00" />
426 <div class="form-group row" style="margin-left: 2%">
427 <div class="form-group col-sm-3">
428 <label> guardActiveEnd: </label>
430 <div class="form-group col-sm-3">
431 <input type="text" class="form-control"
432 ng-disabled="temp.policy.readOnly"
433 ng-model="temp.policy.yamlparams.guardActiveEnd"
434 title="Enter Guard Active End value in following patren '00:00:00-05:00'."
435 placeholder="00:00:00-05:00" />
442 <div ng-if="temp.policy.ruleProvider == 'GUARD_MIN_MAX'">
444 <div class="form-group row">
445 <div class="form-group col-sm-1">
446 <label>Guard MIN/MAX Attributes:</label><br>
449 <div class="form-group row">
450 <div class="form-group row" style="margin-left: 2%">
451 <div class="form-group col-sm-3">
452 <label> actor: </label>
454 <div class="form-group col-sm-3">
455 <input type="text" class="form-control"
456 ng-disabled="temp.policy.readOnly"
457 ng-model="temp.policy.yamlparams.actor" placeholder="Actor" />
460 <div class="form-group row" style="margin-left: 2%">
461 <div class="form-group col-sm-3">
462 <label> recipe: </label>
464 <div class="form-group col-sm-3">
465 <input type="text" class="form-control"
466 ng-disabled="temp.policy.readOnly"
467 ng-model="temp.policy.yamlparams.recipe" placeholder="Recipe" />
470 <div class="form-group row" style="margin-left: 2%">
471 <div class="form-group col-sm-3">
472 <label> CLName: </label>
474 <div class="form-group col-sm-3">
475 <input type="text" class="form-control"
476 ng-disabled="temp.policy.readOnly"
477 ng-model="temp.policy.yamlparams.clname" placeholder="CLName" />
480 <div class="form-group row" style="margin-left: 2%">
481 <div class="form-group col-sm-3">
482 <label> Targets: </label>
483 <button type="button" class="btn btn-default"
484 ng-disabled="temp.policy.readOnly" ng-click="addNewTarget()">
485 <i class="fa fa-plus"></i>
488 <div class="form-group col-sm-4">
490 data-ng-repeat="choice in temp.policy.yamlparams.targets track by $index">
491 <div class="form-group row">
492 <div class="form-group col-sm-9">
493 <input type="text" class="form-control"
494 ng-disabled="temp.policy.readOnly"
495 ng-model="temp.policy.yamlparams.targets[$index]"
496 placeholder="Target" />
498 <div class="form-group col-sm-1">
499 <button type="button" class="btn btn-default" ng-show="$last"
500 ng-disabled="temp.policy.readOnly" ng-click="removeTarget()">
501 <i class="fa fa-minus"></i>
508 <div class="form-group row" style="margin-left: 2%">
509 <div class="form-group col-sm-3">
510 <label> min: </label>
512 <div class="form-group col-sm-3">
513 <input type="text" class="form-control"
514 ng-disabled="temp.policy.readOnly"
515 ng-model="temp.policy.yamlparams.min" placeholder="Min"
516 title="Enter minimum number of VNF instances" />
519 <div class="form-group row" style="margin-left: 2%">
520 <div class="form-group col-sm-3">
521 <label> max: </label>
523 <div class="form-group col-sm-3">
524 <input type="text" class="form-control"
525 ng-disabled="temp.policy.readOnly"
526 ng-model="temp.policy.yamlparams.max" placeholder="Max"
527 title="Enter maximum number of VNF instances" />
530 <div class="form-group row" style="margin-left: 2%">
531 <div class="form-group col-sm-3">
532 <label> guardActiveStart: </label>
534 <div class="form-group col-sm-3">
535 <input type="text" class="form-control"
536 ng-disabled="temp.policy.readOnly"
537 ng-model="temp.policy.yamlparams.guardActiveStart"
538 title="Enter Guard Active Start value in following patren '00:00:00-05:00'."
539 placeholder="00:00:00-05:00" />
542 <div class="form-group row" style="margin-left: 2%">
543 <div class="form-group col-sm-3">
544 <label> guardActiveEnd: </label>
546 <div class="form-group col-sm-3">
547 <input type="text" class="form-control"
548 ng-disabled="temp.policy.readOnly"
549 ng-model="temp.policy.yamlparams.guardActiveEnd"
550 title="Enter Guard Active End value in following patren '00:00:00-05:00'."
551 placeholder="00:00:00-05:00" />
558 <div ng-if="temp.policy.ruleProvider == 'Custom'">
560 <div class="form-group row">
561 <div class="form-group col-sm-1">
562 <label>Component Attributes:</label><br>
563 <button type="button" class="btn btn-default"
564 ng-disabled="temp.policy.readOnly" ng-click="addNewChoice()"
565 title="onClick Component Attribute row is added.">
566 <i class="fa fa-plus"></i>
570 <div class="form-group row">
571 <div data-ng-repeat="choice in temp.policy.attributes">
572 <div class="form-group row" style="margin-left: 2%">
573 <div class="form-group col-sm-3">
574 <select class="form-control" ng-disabled="temp.policy.readOnly"
575 ng-model="choice.key"
576 ng-options="option for option in attributeDictionaryDatas track by option"
577 title="Select the dropdown value driven from Attribute (common)Dictionary.">
578 <option value="">{{choice.key}}</option>
581 <div class="form-group col-sm-3">
582 <input type="text" class="form-control"
583 ng-disabled="temp.policy.readOnly" ng-model="choice.value"
584 placeholder="Attribute Value"
585 title="Enter the Attribute Value without any spaces and special characters" />
587 <div class="form-group col-sm-1">
588 <button type="button" class="btn btn-default" ng-show="$last"
589 ng-disabled="temp.policy.readOnly" ng-click="removeChoice()"
590 title="onClick will remove the last row">
591 <i class="fa fa-minus"></i>
600 <div ng-if="temp.policy.ruleProvider == 'Custom'">
602 <div class="form-group row">
603 <div class="form-group col-sm-1">
604 <label>Settings Attributes:</label><br>
605 <button type="button" class="btn btn-default"
606 ng-disabled="temp.policy.readOnly"
607 ng-click="addNewSettingsChoice()"
608 title="onClick Settings Attribute row is added.">
609 <i class="fa fa-plus"></i>
613 <div class="form-group row">
614 <div data-ng-repeat="settingschoice in temp.policy.settings">
615 <div class="form-group row" style="margin-left: 2%">
616 <div class="form-group col-sm-3">
617 <select class="form-control" ng-disabled="temp.policy.readOnly"
618 ng-model="settingschoice.key"
619 ng-options="option for option in settingsDictionaryDatas track by option"
620 title="Select the dropdown value driven from Settings (Decision)Dictionary.">
621 <option value="">{{settingschoice.key}}</option>
624 <div class="form-group col-sm-3">
625 <input type="text" class="form-control"
626 ng-disabled="temp.policy.readOnly"
627 ng-model="settingschoice.value" placeholder="Settings Value"
628 title="Enter the Settings Attribute Value without any spaces and special characters" />
630 <div class="form-group col-sm-1">
631 <button type="button" class="btn btn-default" ng-show="$last"
632 ng-disabled="temp.policy.readOnly"
633 ng-click="removeSettingsChoice()"
634 title="onClick will remove the last row">
635 <i class="fa fa-minus"></i>
644 <div ng-if="temp.policy.ruleProvider == 'Custom'">
646 <label>Decision Rule Algorithms:<sup><b></b></sup></label><br>
647 <div class="form-group row">
648 <div class="form-group col-sm-1">
649 <button type="button" class="btn btn-default"
650 ng-disabled="temp.policy.readOnly"
651 ng-click="addNewRuleAlgorithm()"
652 title="onClick Rule Algorithms row is added.">
653 <i class="fa fa-plus"></i>
657 <div class="form-group row">
659 data-ng-repeat="ruleAlgorithmschoice in temp.policy.ruleAlgorithmschoices">
660 <div class="form-group row" style="margin-left: 2%">
661 <div class="form-group col-sm-1">
663 ng-model="ruleAlgorithmschoice.dynamicRuleAlgorithmLabels"
664 name="dynamicRuleAlgorithmLabels">{{ruleAlgorithmschoice.id}}</label>
666 <div class="form-group col-sm-3">
667 <select class="form-control" id="mySelect"
668 ng-disabled="temp.policy.readOnly"
669 ng-model="ruleAlgorithmschoice.dynamicRuleAlgorithmField1"
670 ng-options="option for option in attributeDictionaryDatas track by option"
671 name="dynamicRuleAlgorithmField1"
672 title="Select the dropdown value driven from Attribute (common)Dictionary or Settings (Decision)Dictionary.">
673 <option value="">{{ruleAlgorithmschoice.dynamicRuleAlgorithmField1}}</option>
676 <div class="form-group col-sm-3">
677 <select type="text" class="form-control"
678 ng-disabled="temp.policy.readOnly"
679 ng-model="ruleAlgorithmschoice.dynamicRuleAlgorithmCombo"
680 ng-options="option for option in functionDefinitionDatas track by option"
681 name="dynamicRuleAlgorithmCombo"
682 title="Select the dropdown value driven from FunctionDataType."></select>
684 <div class="form-group col-sm-3">
685 <input type="text" class="form-control"
686 ng-disabled="temp.policy.readOnly"
687 ng-model="ruleAlgorithmschoice.dynamicRuleAlgorithmField2"
688 name="dynamicRuleAlgorithmField2"
689 title="Enter the Value without any spaces and special characters and for rule formation use A1, A2,..etc., based on above Rules." />
691 <div class="form-group col-sm-1">
692 <button type="button" class="btn btn-default"
693 ng-disabled="temp.policy.readOnly"
694 ng-click="removeRuleAlgorithm()"
695 title="onClick will remove the last row">
696 <i class="fa fa-minus"></i>
705 <div id="validate" style="width: 70%"></div>
707 <div class="modal-footer">
708 <button class="btn btn-primary" herf="javascript:void(0)"
709 ng-disabled="temp.policy.readOnly"
710 ng-click="validatePolicy(temp.policy);"
711 title="Validate the data entered in the Policy fields.">Validate</button>
712 <button class="btn btn-success" herf="javascript:void(0)"
713 ng-disabled="savebutton" ng-disabled="temp.policy.readOnly"
714 ng-click="saveDecisionPolicy(temp);"
715 title="Save the Policy with validated data.">Save</button>
716 <button type="button" class="btn btn-default" ng-click="refresh();"
717 title="Close the template.">Close</button>