Fork of https://github.com/modality/charred-black.
Short term, has some fixes.
Long term, may include a tool to create and edit stock/lifepath/skill/trait data.
http://charred.obscuritus.ca:8080/#/
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
297 lines
15 KiB
297 lines
15 KiB
<div class='container' ng-controller='StockedCtrl'>
|
|
<h1 id='intro'>Stocked</h1>
|
|
<div class='well'>
|
|
Stocked (Stock·ed)
|
|
<br>
|
|
<br>
|
|
<ol>
|
|
<li><i>adj.</i> Furnished with more than enough. <i>(ref https://www.vocabulary.com/dictionary/stocked)</i></li>
|
|
<li><i>n.</i> A portmanteau of <i>stock</i> and <i>editor</i>.</li>
|
|
</ol>
|
|
</div>
|
|
<div class='panel panel-default'>
|
|
<div class='panel-heading' >
|
|
<h4 class='panel-title'>
|
|
<a href='' ng-click='collapseBody("#collapse_tools")'>▸</a>
|
|
Tools
|
|
</h4>
|
|
</div>
|
|
<div class='panel-collapse collapse in' id='collapse_tools'>
|
|
<div class='panel-body'>
|
|
<div class='alert alert-danger alert-dismissable' ng-repeat="warn in alertsOfType('tools', 'warn')">
|
|
<button aria-hidden='true' class='close' ng-click="removeAlert('tools',warn)" type='button'>×</button>
|
|
{{warn}}
|
|
</div>
|
|
<div class='alert alert-success alert-dismissable' ng-repeat="warn in alertsOfType('tools', 'succ')">
|
|
<button aria-hidden='true' class='close' ng-click="removeAlert('tools',warn)" type='button'>×</button>
|
|
{{warn}}
|
|
</div>
|
|
<div class='container'>
|
|
<div class='row'>
|
|
<div class='col-md-3'>
|
|
<a href='' ng-click='stocked_downloadCharredModel()'>
|
|
TODO: Download charred model
|
|
</a>
|
|
</div>
|
|
<div class='col-md-3'>
|
|
<a href='' ng-click='stocked_generateMarkdown()'>
|
|
TODO: Generate Markdown
|
|
</a>
|
|
</div>
|
|
<div class='col-md-3'>
|
|
<a href='' ng-click='stocked_generateWikipage()'>
|
|
TODO: Generate wikipage
|
|
</a>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class='panel-heading'>
|
|
<h4 class='panel-title'>
|
|
<a href='' ng-click='collapseBody("#collapse_general")'>▸</a>
|
|
General
|
|
</h4>
|
|
</div>
|
|
<div class='panel-collapse collapse in' id='collapse_general'>
|
|
<div class='panel-body'>
|
|
<label for='stock-name'>Name:</label>
|
|
<input class='form-control input-lg not-editing editable-name' name='stock-name' id='stock-name'
|
|
ng-model="general.Name" ng-click="$event.stopPropagation()"
|
|
ng-focus='editField($event, true)' ng-blur='editField($event, false)' />
|
|
|
|
<label for='stock-stride'>Stride:</label>
|
|
<input type="number" class='not-editing editable-num' name='stock-stride' id='stock-stride'
|
|
ng-model="general.Stride" ng-click="$event.stopPropagation()"
|
|
ng-focus='editField($event, true)' ng-blur='editField($event, false)' />
|
|
<br />
|
|
TODO: common traits
|
|
<div>
|
|
<span>{{general.CommonTraits}}</span>
|
|
<select class='form-control' ng-model='general.selectedTrait' ng-options='t for t in charredTraits'></select>
|
|
</div>
|
|
<div>
|
|
<a href='' ng-click='general.CommonTraits.push(general.selectedTrait)'>Add trait</a>
|
|
</div>
|
|
<div>
|
|
<a href='' ng-click=''>TODO: Add new trait</a>
|
|
</div>
|
|
<br />
|
|
TODO: other things in General section?
|
|
</div>
|
|
</div>
|
|
<div class='panel-heading'>
|
|
<h4 class='panel-title'>
|
|
<a href='' ng-click='collapseBody("#collapse_settings")'>▸</a>
|
|
Settings
|
|
</h4>
|
|
</div>
|
|
<div class='panel-collapse collapse in' id='collapse_settings'>
|
|
<div class='panel-body'>
|
|
<a ng-click='collapseBody(".collapse_all_settings", $event)' href=''>
|
|
collapse/expand all settings
|
|
</a>
|
|
<div class='list-group'>
|
|
<div ng-repeat="setting in settings" class='list-group-item'>
|
|
<div class='panel-heading'>
|
|
<a href='' class="panel-title" ng-click='collapseBody("#collapse_" + to_id(setting.name))'>▸</a>
|
|
<input class='form-control input-lg not-editing editable-name'
|
|
ng-model="setting.name" ng-click="$event.stopPropagation()"
|
|
ng-focus='editField($event, true)' ng-blur='editField($event, false)' />
|
|
</div>
|
|
<div class='panel-collapse collapse in collapse_all_settings' id='collapse_{{to_id(setting.name)}}'>
|
|
<div class='panel-body'>
|
|
<div class="panel">
|
|
<div class="panel-body">
|
|
<a ng-click='collapseBody(".collapse_all_"+to_id(setting.name), $event)' href=''>
|
|
collapse/expand all paths in setting
|
|
</a>
|
|
<div class='container-fluid'>
|
|
<div class='row'>
|
|
<div class='h4 col-md-3'>Lifepath</div>
|
|
<div class='h4 col-md-1'>Time</div>
|
|
<div class='h4 col-md-1'>Res</div>
|
|
<div class='h4 col-md-3'>Stat</div>
|
|
<div class='h4 col-md-4'>Leads</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div ng-repeat="path in setting.lifepaths">
|
|
<div class='panel-heading'>
|
|
<div class='container-fluid'>
|
|
<div class='row'>
|
|
<div class="col-md-3">
|
|
<a href='' class="panel-title" ng-click='collapseBody("#collapse_" + to_id(path.name))'>▸</a>
|
|
<input ng-model="path.name"
|
|
class='form-control input-lg not-editing editable-name'
|
|
ng-click="$event.stopPropagation()"
|
|
ng-focus='editField($event, true)' ng-blur='editField($event, false)' />
|
|
</div>
|
|
|
|
<div class="col-md-1">
|
|
<input type="number" ng-model="path.time"
|
|
class='not-editing editable-num'
|
|
ng-click="$event.stopPropagation()"
|
|
ng-focus='editField($event, true)' ng-blur='editField($event, false)' />
|
|
<span>yrs</span>
|
|
</div>
|
|
|
|
<div class="col-md-1">
|
|
<input type="number" ng-model="path.res"
|
|
class='not-editing editable-num'
|
|
ng-click="$event.stopPropagation()"
|
|
ng-focus='editField($event, true)' ng-blur='editField($event, false)' />
|
|
</div>
|
|
|
|
<div class="col-md-3">
|
|
<input type="number" ng-model="path.stat.M"
|
|
class='not-editing editable-num'
|
|
ng-click="$event.stopPropagation()"
|
|
ng-focus='editField($event, true)' ng-blur='editField($event, false)' />
|
|
<span>M</span>
|
|
<input type="number" ng-model="path.stat.P"
|
|
class='not-editing editable-num'
|
|
ng-click="$event.stopPropagation()"
|
|
ng-focus='editField($event, true)' ng-blur='editField($event, false)' />
|
|
<span>P</span>
|
|
<input type="number" ng-model="path.stat.PM"
|
|
class='not-editing editable-num'
|
|
ng-click="$event.stopPropagation()"
|
|
ng-focus='editField($event, true)' ng-blur='editField($event, false)' />
|
|
<span>P/M</span>
|
|
</div>
|
|
|
|
<div class='h5 col-md-4 path-leads'>
|
|
<div class="path-leads-read">
|
|
<i>{{path.leads().join(", ")}}</i>
|
|
<a href='' ng-click='editLeads($event)'>Edit</a>
|
|
</div>
|
|
<div class="path-leads-write" hidden="hidden">
|
|
<div ng-repeat="setting in settings">
|
|
<input type="checkbox" id='{{to_id(path.name)}}-to-{{to_id(setting.name)}}'
|
|
ng-model='path.leads_dict[setting.name]' value='{{to_id(setting.name)}}' />
|
|
<label for='{{to_id(path.name)}}-to-{{to_id(setting.name)}}'>
|
|
{{setting.name}}
|
|
</label>
|
|
</div>
|
|
<a href='' ng-click='readLeads($event)'>Done</a>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class='panel-collapse collapse in collapse_all_{{to_id(setting.name)}}' id='collapse_{{to_id(path.name)}}'>
|
|
<div class='panel-body'>
|
|
<span ng-if='$first'>TODO: Born/common traits</span>
|
|
|
|
<div>
|
|
<b><i>Skills:</i></b>
|
|
<span ng-if='path.skills.lpSkills.length > 0' ng-click='editPoints($event)'>
|
|
{{StockedUtil.pluralize(path.skills.lpPoints, "pt")}}:
|
|
</span>
|
|
<div style="display: inline;" ng-repeat='skill in path.skills.lpSkills track by $index'>
|
|
{{skill}}<a href='' ng-click='path.skills.removeSkill($index)'>[X]</a><!--
|
|
--><span ng-if='!$last'>,</span></div><!--
|
|
--><span ng-if='path.skills.lpSkills.length > 0 && path.skills.generalPoints > 0'>;</span>
|
|
<span ng-if='path.skills.generalPoints > 0'>{{StockedUtil.pluralize(path.skills.generalPoints, "pt")}}: General</span>
|
|
</div>
|
|
|
|
<div>
|
|
<b><i>Traits:</i></b>
|
|
<span ng-if='path.traits.lpTraits.length == 0'>—</span>
|
|
<span ng-if='path.traits.lpTraits.length > 0' ng-click='editPoints($event)'>
|
|
{{StockedUtil.pluralize(path.traits.points, "pt")}}:
|
|
</span>
|
|
<div style="display: inline;" ng-repeat='trait in path.traits.lpTraits track by $index'>
|
|
{{trait}}<a href='' ng-click='path.traits.removeTrait($index)'>[X]</a><!--
|
|
--><span ng-if='!$last'>,</span></div>
|
|
</div>
|
|
|
|
<div ng-if="path.requires" class="horizontal-input-pair">
|
|
<label for="{{to_id(path.name)}}-requires"><b><i>Requires: </i></b></label>
|
|
<input ng-model="path.requires" id="{{to_id(path.name)}}-requires"
|
|
class='form-control not-editing editable-line'
|
|
ng-click="$event.stopPropagation()"
|
|
ng-focus='editField($event, true)' ng-blur='editField($event, false)' />
|
|
</div>
|
|
<div ng-if="path.restrict" class="horizontal-input-pair">
|
|
<label for="{{to_id(path.name)}}-restrict"><b><i>Restrictions: </i></b></label>
|
|
<input ng-model="path.restrict" id="{{to_id(path.name)}}-restrict"
|
|
class='form-control not-editing editable-line'
|
|
ng-click="$event.stopPropagation()"
|
|
ng-focus='editField($event, true)' ng-blur='editField($event, false)' />
|
|
</div>
|
|
|
|
<div class="add-skills-traits-container" class="container">
|
|
<div class='row'>
|
|
<div class='col-md-3'>
|
|
<select class='form-control' ng-model='path.selectedSkill' ng-options='s for s in charredSkills'></select>
|
|
</div>
|
|
<div class='col-md-1'>
|
|
<a href='' ng-click='path.skills.addSkill(path.selectedSkill)'>Add skill</a>
|
|
</div>
|
|
<div class='col-md-2'>
|
|
<a href='' ng-click=''>TODO: Add new skill</a>
|
|
</div>
|
|
|
|
<div class='col-md-3'>
|
|
<select class='form-control' ng-model='path.selectedTrait' ng-options='t for t in charredTraits'></select>
|
|
</div>
|
|
<div class='col-md-1'>
|
|
<a href='' ng-click='path.traits.addTrait(path.selectedTrait)'>Add trait</a>
|
|
</div>
|
|
<div class='col-md-2'>
|
|
<a href='' ng-click=''>TODO: Add new trait</a>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<span>WISHLIST: requires expression</span>
|
|
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class='panel panel-default'>
|
|
<input class='form-control input-lg not-editing editable-name'
|
|
name='new-lifepath-name' id='new-lifepath-name'
|
|
ng-model="setting.newLifepathName" ng-click="$event.stopPropagation()"
|
|
ng-focus='editField($event, true)' ng-blur='editField($event, false)' />
|
|
<a href='' ng-click='setting.addLifepath()'>Add new lifepath</a>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class='panel panel-default'>
|
|
<input class='form-control input-lg not-editing editable-name'
|
|
name='new-setting-name' id='new-setting-name'
|
|
ng-model="newSettingName" ng-click="$event.stopPropagation()"
|
|
ng-focus='editField($event, true)' ng-blur='editField($event, false)' />
|
|
<a href='' ng-click='addSetting()'>Add new setting</a>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class='panel-heading'>
|
|
<h4 class='panel-title'>
|
|
<a href='' ng-click='collapseBody("#collapse_skills")'>▸</a>
|
|
Skills
|
|
</h4>
|
|
</div>
|
|
<div class='panel-collapse collapse in' id='collapse_skills'>
|
|
<div class='panel-body'>
|
|
TODO: The stock's skill list and adding a new one
|
|
</div>
|
|
</div>
|
|
<div class='panel-heading'>
|
|
<h4 class='panel-title'>
|
|
<a href='' ng-click='collapseBody("#collapse_traits")'>▸</a>
|
|
Traits
|
|
</h4>
|
|
</div>
|
|
<div class='panel-collapse collapse in' id='collapse_traits'>
|
|
<div class='panel-body'>
|
|
TODO: The stock's trait list and adding a new one
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|